I'm not exactly sure how your game works, but what about putting all the game code after you receive the serial event? That way you only process the players input after you actually receive it.
Something like this perchance:
void loop(){
int array_disp = random(1,4); //Generate a random number between 1-4
randomWork(array_disp); //display the array based on the random integer
Serial.println(input); //Used for debugging purposes
if (Serial.available() > 0) {
input = Serial.read(); //read the character from the serial port
delay(3000);
Serial.println(input); //Used for debugging purposes
checkInput(input,array_disp); //Use checkInput to see if the score gets incremented
delay(1000);
Serial.println(score); //debugging
Serial.println(prevScore); //debugging
Serial.println(input); //debugging
delay(5000);
//Checks if the two scores are the same, if they are it means the
//player input an incorrect score and they have lost the game.
if (prevScore == score) {
displayArray(lose);
Serial.println("Game Over, good try!!!");
Serial.print("Score: ");
Serial.print(score);
score = 0;
prevScore = 0;
delay(10000);
}
//Checks if the two scores are different, if they are the player has
//entered the correct input.
if (prevScore != score) {
prevScore = score;
}
clearScreen(); //Clear the screen
}
}