É difícil escrever sobre isso de forma clara ! Pois existem muitos poréns ...
Como saber como iniciar em contingência ?
Isso depende de um monte de coisas, como o modelo da nota, liberação, legislação (do estado em questão), conhecimento do usuário, e por ai vai.
Considerar entrar em contingência quando ocorre timeout é ABSURDO !!! e ILEGAL. No caso da NFe (modelo 55) nem adianta tentar enviar para SVC-AN ou SVC-RS sem que tenha havido a liberação pela SEFAZ autorizadora, simplesmente não vai funcionar.
Não tem uma resposta simples para isso.
No caso da NFCe, fora de SP, acredito que não haja problema entrar em contingência OFFLINE mas novamente isso depende da legislação de cada estado. E no caso de SP é só usar o SAT@ (lembre-se que o SAT@ trabalha em USB e não em rede, mas tem alguns aparelhos cujo fabricante fornece conexão por rede a partir de um servidor local).
Como saber quando desativar a contingência ?
A volta de uma condição de contingência para operação normal, até pode ser automatizada, mas teríamos que estudar isso um pouco mais a fundo para não fazer besteira, mas em principio poderíamos buscar o status do serviço e caso estiver novamente "ONLINE" a contingência pode ser desabilitada automaticamente. Apenas teria o cuidado de verificar se o retorna da operação está estável antes de desativar.
Mas como eu disse tem que estudar melhor isso. Eu não sei tudo, preciso discutir isso com outros desenvolvedores para poder estabelecer um critério mais logico e permanente.
Roberto