Eh si sono ancora IO

.
Ne approfitto nel chiedere ora perchè ho tempo.. e mi sono venute in mente alcune curiosità che mi porto avanti da tempo..
Oltre alle precedenti-recenti domande che ho posto.. mi piacerebbe sapere come controllare al meglio lo stato di una sessione.
Mi spiego meglio: In alcune applicazioni, nelle quali faccio un utilizzo(neanche troppo eccessivo delle session) spesso le sessioni scadono prima del normale...
Ad esempio molto spesso mi capita di gestire un AsyncFileUpload in una normale pagina di inserimento, per memorizzare un'immagine ed utilizzo una variabile di Session per memorizzare il nome del file da associare una proprietà di una classe da me creata.. però spesso se sto più di 5 minuti (non 20 (tempo di timeout della session) perchè mi capita di inserire altre informazioni in altri campi.. quando poi vado a fare l'upload o si blocca.. o carica all'infinito.. o mi perde l'immagine....
Ma di solito mi è capitato anche con l'accesso a delle pagine autenticate.. in cui faccio qualcosa del tipo:
Session["Accesso"] = true;
Faccio il mio inserito.. magari perdo tipo 7 minuti.. quando poi faccio SALVA.. ecco che mi ritorna alla pagina di LOGIN!
Ma com'è possibile??? La sessione non dura almeno 20 minuti di default???
Da cosa potrebbe dipendere???