Это называется по-модному Exit Intent Technology.
Есть платные сервисы, которые позволяют реализовать такое. Например,
Optimonk. Вот пост про них у меня в блоге:
99rabbits.com/blog/bounce-exchange-alternative (на английском).
Там же сказано, что существует open souce библиотека
ouibounce, на которой можно построить своё решение.
А тем кто фукает скажу, что это нормальная практика, если правильно настроить и показывать то, что реально может быть интересно.