You are absolutely right -- and I would end up putting the shopping cart data into a DB or similar. I think in that case it might even be better because they could log out, go away, and a long time later come back to the same shopping cart, without me having to save their continuations the whole time.
Another idea is to have a per-session store for this sort of thing. Right now I have, for a given session, a set of continuations for all the states they've been in. So if we want we could bring back a general session storage area for this sort of cross-continuation storage.
I personally prefer the DB storage, but this would work too. Either way We still get the benefits of the control-flow using the continuations.