How about something like this;
* First state has a Wait (the maximum time out) which sends an event another state (State 2) to do the scene change or what ever
* First state is also watching for mouse input vectors. When any vector is detected, it goes to State 3. You may want more instructions if you aren't used to getting these kind of inputs, but basically just record the vectors, maybe as a float for each direction, then do a Float Compare every frame where more or less than 0 sends the event to go to State 2.
* State 3 is just to interrupt the Wait in State 1. You could just have it Finish and go straight back to State 1... Only that won't work properly
That could potentially create an error where it loops too many times and pauses the FSM. So OK, what you can do instead is use another quick wait. 1 second or what ever. Just enough so it won't trip the "infinite loop detector" (I don't know what it's called, but stops it circling infinitely each tick) but not enough to through the actual time out Wait too much for your liking.
Every time it goes back to State 1, the timer (Wait) there will restart again.