Ну можно наверное по setInterval'у смотреть, естли интервал например на 100 мс стал выполняться за 1000, то юзер ушёл. Но хз как тут с кроссбраузерностью, да и просто если у юзера тормоза - сработать может.)
Пример: Запустить скрипт и перейти на др. вкладку. Тест. FF
<html>
<body>
<script>
t=new Date();
function b(){document.body.appendChild(document.createTextNode((t-(t=new Date()))<-800?' AWAY ':' here '))}
setInterval(b,100)
</script>
</body>
</html>