Just a note, if you UFMatch an 'unmatched' user to a CiviCRM contact while they're using the site, the contact id is also not updated in the session. It will still read '0' even after they've been matched.
In short: the session variables are not updated if they 'change' once the session has been started.
I'm not sure what the right thing to do in this case. Punting to next release while we think about it