Hmm...well I guess we have to go back to Dave's question, what are you trying to do exactly? Unfortunately there doesn't seem to be any hook when a session object is created except the one you're using, and as I mentioned above, $vbulletin isn't ready yet at that point. I don't see why what you have above wouldn't work (you'd really want to have all the code except the "global $lowlevelundocheck;" inside the if, but that's just for efficiency). However, there are a couple of other places where session objects are created (login and logout) that happen after the global_setup_complete hook, and I don't know how those affect what you're doing.
I should have let Dave handle it, but I thought your problem might just be the global $vbulletin.