Also look into the finite state machine, as that's what you need.
Basically, if the button order is 1, 2, 3, 4, you'd get something like this:
unsigned int lastPressed = 0;
void loop() {
if (digitalRead(button1) == LOW) { // You probably need to debounce your buttons or it's registered a second time as false press - you may simply use lastPressed for this and ignore presses for 25 ms or so.
if (programState == 0) programState = 1 // Next step.
else programState = 0; // wrong button; back to zero.
lastPressed = millis(); // record when we had a button pressed.
}
if (digitalRead(button2) == LOW) {
if (programState == 1) programState = 2 // Next step.
else programState = 0; // wrong button; back to zero.
lastPressed = millis(); // record when we had a button pressed.
}
// Same for the other buttons.
if (millis() - lastPressed) > 10000 programSate = 0; // reset after 10 seconds of no button presses.
// Set LEDs based on the stage you're in.
}