Decision making paradigm for career planning
Since the purpose of this question is to ask for general decision-making strategies that might apply more generally, here are some (that also impinge on this case):


Acquire information: Get as much information as you can that would affect the decision: in your case, estimates of time for the visa process, and so on. 
Determine the "real" timeline for decision making: in this case, do you really have to decide in three weeks ? can it be delayed slightly ? and so on. 
Determine how "permanent" the decisions are: can you negotiate a 1 year contract ? Can you defer the postdoc ? 
Separate out facts that affect the decision from feelings/opinions: Is it true that "if the visa comes through I'm going without a doubt" ? If so, then everything depends on facts regarding the visa. Is it instead true that "if the visa comes through I have a preference, but I do enjoy teaching and like staying in the US" ? In that case, there's a personal preference coming into play that isn't usually resolved by "facts", and so timelines and data collection don't matter as much as (or are influenced by)  some soul searching.