Tutto l'ambaradan della procedura e' dovuto al fatto che l'evento onunload scatta anche quando semplicemente si cambia la pagina nella finestra, puoi ovviare solo con un (minimo) disagio (e sperando che l'utente non abbia disabilitato i popup).
Inoltre fare ricorso ad una semplice funzione non impedisce alla finestra corrente di chiudersi, con la scomparsa degli script presenti... talvolta impedendo il normale completamento di questi (puo' essere richiamata una sola funzione che non puo' a sua volta richiamarne altre).
ciao