You could make use of timer boundary events for your user task. Whenever this timer expires user task will be skipped (at least that is default behavior) and process can move on to ended or canceled state (based on your process design).
As far as I know you can't attach boundary event directly to the user task (not yet), but instead you can attach it to subprocess that will enclose a user task.
HTH