Here is one of many possible ways of doing this:
1) Start with a Multivalue token that contains a list of Users that could potentially take this task, such that the first value corresponds to the person who normally would do this, the second is the backup, the third is the backup to the backup, and so on. Say then we have a list of 5 people, with the first being Cameron, second Derek, third Flavio, fourth Bob, etc. You can create such a token using the Assign Token Values activity, or it could be a Multivalue field on the relevant document, or any number of similar approaches.
2) When your workflow is ready to route the document to the person who will take charge, it uses a For Each Value loop to go through each name to figure out who should take the job, starting with #1, Cameron.
3) For each value, we do some sort of lookup to figure out whether the person (starting with Cameron) is currently able to take this routed document (for this we could do some SQL lookup as Derek suggested above, or some other mechanism... this part is somewhat open-ended). If Cameron can take the task, then Route the document to Cameron and end the Workflow. If not, then check on person #2, Derek, and repeat the same process, so on until every backup in the list has been checked on.
4) If it happens that EVERYONE in the list is sick/unavailable, you could handle that after the For Each Value loop, which will only be hit if nobody gets the routed document since we placed an End Workflow inside the loop. This may happen, for example, if there's a day off and someone forgot to update the workflow to account for that
This approach would look something like this:

Again, this is only one of many ways of doing it, but it's a fairly straightforward approach and has the added benefit of being easy to extend; for example, adding or removing one more "backup" is as trivial as adding/removing a value from the MV token =)