I find your topic rather interesting.
Here's my input:
Its pretty clear that you need to 'bookmark' the state of the application (or you may call saving of the session) and return to it.
You should be using the Memento Pattern to do this.
Now, about your implmentation choices, I have a few suggestions:
1. Identify 'savepoints' until which the session can be saved and the user may be able to resume the operation from this 'savepoint' on his subsequent logins. This helps you define and scope the objects you need to worry about saving, and hence makes life easier for your design.
2. Once identified, all objects must adhere to a uniform interface. this allows easier saving and reloading(using factory/builder) of the objects.
3. identify the pages which are supported for resumption of session. Do not allow saving of session (state) across all pages on the applications.
4. Persist your state using database.
5. Users may/maynot return back to their persisted states, leading to maintainance nightmares of bulk of records (or states). So, make life easier by housekeeping the state, meaning each state will expire unless used within a timeperiod. Use an expireDate (default to 30 days) for each saved state.
Do post your comments and feedbacks on this topic, I am interested to know about your final choice of design (and its implementation flavours).
Regards,