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