From the manual:
session.gc_probability specifies the probability that the gc (garbage collection) routine is started on each request in percent.
Defaults to 1.
session.gc_maxlifetime specifies the number of seconds after which data will be seen as 'garbage' and cleaned up.
So, two conditions have to be met:
First, the gc routine has to be fired, which is governed by the laws of probability. If you have no traffic, it won't be fired (but then, of course, you won't have any sessions to clean up, either!)
Second, the session data file has to be aged > gc_maxlifetime.
On my Prattle test system, I get a lot of traffic whenever I announce a new version, and I can see the sessions are cleaned up. Between releases, traffic may drop to near zero, and I can leave a browser logged in all night because the session file isn't purged.
The bottom line, though, is that this is not anything you need to worry about unless you're running your server on some broken operating system. Session files are secure (readable only by the Web server); if you want to be even more paranoid, you can do an md5 hash of the user ID and use it as an authority check (see Tim Perdue's column on authentication).