Время, которое пользователь проводит на сайте
Совершенно корректно это время подсчитать невозможно (если только не отсылать на сервер данные о всех перемещениях и нажатиях пользователя на странице — а не только о тех, которые инициируют какое-то общение с сервером).

Чуть более корректно можно подсчитать, анализируя все обращения клиента на сервер самостоятельно. Скажем, пользователь открыл форму регистрации в 10.00. Мы знаем, что на её заполнение в среднем уходит 2 минуты. В 10.10 пользователь нажал на «Зарегистрироваться». Вероятнее всего, что реально он на сайте провёл около двух минут (отвлекаясь на что-то ещё), чем все десять минут.

По идее, составив табличку, где будут прописаны средние времена работы с той или иной страницей/действием + анализируя логи, можно более или менее корректно высчитать время работы человека на сайте.

В одном из проектов, к которому я имею отношение, мы считаем время по подобному алгоритму, правда, табличка у нас довольно упрощённая. Но и время нам нужно знать лишь приблизительно.

Но, может быть, есть и онлайн-сервисы, которые умеют подобное. Может быть кто-то ещё подскажет.
Появилась идея, но не знаю насколько она рабочая, так как никогда такого не делал.
Время ведь можно считать на клиенте с помощью javascript и в необходимых ситуациях (например, переход по внешней ссылке) уже отправлять аяксом на сервер. Нужно только повесить на все внешние ссылки соответствующие обработчики. Ну и трекать, когда человек просто вводит в строке браузера другой URL и уходит с сайта. Насколько мне известно, и то, и другое реализовать можно.