Don't keep large amounts of data in the session itself. Instead, keep it in your friendly local database table (or tables) and only put the key into the table in the session. You could even make it so that the user can log out and log in from another machine and get back at that same data by making the data keyed "off their account" somehow.
In short, think carefully about what the lifetime of the data really should be. For large data, tying it to an HTTP session is probably the wrong approach as users tend to get upset when they have to reupload/recreate it because of a browser glitch.