se non ricordo male javascript gestisce il focus sulle pagine.. magari con quello si riesce ad essere più precisi.. se stai sulla pagina e stai facendo qualche operazione sei attivo altrimenti no..

oppure potresti usare sempre js per segnalare alla chiusura della pagina di fare il logout se non fatto.. simile a quando chiudi la pagina del forum e hai scritto un messaggio ma non lo hai inviato..

con php il delay di caduta della sessione non lo togli