когда-то писал такую штуку(довольно давно), алгоритм там прост как две копейки.
задается expired-период, т.е. время через которое человек считается покинувший сайт.
при заходе на страницу:
1. каждый раз записывается время и идентификатор человека, если он где-то кликает, то время обновляется(если идентификатор уже есть).
2. удаляются expired-пользователи. т.е. чье последнее время+expired-период меньше чем время сейчас.
минусы:
не дает 100% гарантии что человек именно закрыл браузер.
технологии:
данные можно хранить в бд или в обычном файле.
в качестве идентификатора может служить например:
ip адрес
cookie
можно привлечь сюда сессии.
вариантов море