your not losing the session id right? because if your still getting the order which is stored in the db and its associated w/ the sid, the sid couldnt be changing.
does it look like your losing all session data, or just parts of it?
i would put some checkpoints in place.
like for example, if on step 3 of the checkout process or whatever, there SHOULD be some specific variables set in the session, and you find that they arent, make a log of it.
another option might be to put error_reporting() to E_ALL but display errors off, and log all errors. this should let you see all undefined variables and indexes, and you could define a custom error handler to add the approriate info to the error entry to help you locate it.
that wouldnt work if you use isset() and empty() religiously though. but if you dont, that would be a very easy way to look at your entire script instead of manually inserting checkpoints.