Check the Windows Event Log to ensure that the Worker Process is not being forced to recyle.
There may be something in your code that causes the Worker Process to force itself to recyle in which case when the session is stored inProc it will loose all session values it's holding.