[eluser]dmorin[/eluser]
I had to do something similar once. My solution was not to use the session id but to create an additional field in the session that contained a long-term id (that's what I called it) that wouldn't get updated when the session ID was regenerated. I ended up just extending the session class and in the function that creates the session, I add a field to the userdata portion and store an MD5 or SHA1 hash in it. That way every new session has a long-term-id by default. You also don't loose out of the security feature of quickly updated session ids.
CI 2.0 FEATURE REQUEST:
Add hooks/events to the session library
pre-create, post-create, pre-update-id, post-update-id, etc