Sessions DO NOT end when a user closes their browser. There is no communication with the server when a browser is closed so there is no way the server can know to end the session. The same is true when you leave the site for another. Again no communication takes place between your browser and the site you're leaving so the server never knows you've left.
Basically the only solution I know of is to set up a client-side event to call a server-side script to abandon the session when the user leaves.