No puedes hacer que la sesión termine por si sola (creo) pero una solución práctica sería la siguiente:
Cuando el usuario inicia sesión tu creas una sesión extra llamada tiempo cuyo valor sea igual a time() osea la hora y fecha exacta en que se creó la sesión. Ahora cada vez que validez que el usuario esté conectado fijándote si la sesión de usuario existe, también te fijas cual es la diferencia de tiempo desde que el usuario ha iniciado sesión. En caso de que el resultado de mayor a por ejemplo 3600 segundos lo desconectas.
Utilizando el sistema anterior lograrás que exista un tiempo fijo para las sesiones y funciona tanto si el usuario entra un segundo después de que la sesión expire o horas luego de que expiró.
P.D.: Si quieres que las sesiones se extiendan aún cuando el usuario ya ha cerrado el navegador sustituye a la sesión antes mensionada por una cookie.
Saludos y espero haberte ayudado un poco por lo menos.