IIS resets session variables only when the session ends.
Maybe IIS will not reset session variables n minutes after receiving a request?
The session ends when the timeout occurs, so your n is the timeout defined for your session.
Should I create a windows service instead to be 100% sure?
I think you can do it without a windows service.
This article can help you http://msdn.microsoft.com/en-us/library/system.web.sessionstate.sessionstatemodule.end(v=vs.100).aspx