InsaneX, должен тебя разочаровать - точно ты не определишь ни в каком случае.
Особенность веб-протокола - stateless communication; говоря проще, ты запросил страницу, получил ее - все, с точки зрения сервера ты уже отключился. Кого считать присутствующим в данный момент - определяется только тайм-аутом - 5 мин, или 5 сек - разницы нет.
Соответственно, чем меньше таймаут - тем точнее будет определение. Возможные варианты:
- делаешь скрытый фрейм на странице, который рефрешится каждые N секунд и дергает какой-то action - там ты и отмечаешь, что юзер в онлайне.
- способ чуть сложнее - пишется джава-апплет, который встраивается в страницу и делает, в общем, то же самое
Больше вариантов нет; грубо говоря, браузер должен постоянно стучаться в дверь и кричать - "я тут! я тут"

По-другому не выйдет - HTTP такой