For truly large chunks of data, there's no way you want to send all that data to the client just to come right back. That's effectively what you're doing when you put a value as a form field or a querystring. You'll use up bandwidth and slow down your users experience.
Storing huge amounts of data in the session is a very bad idea. It's either in-proc which is using up your servers main memory, or it's being serialized to another server (State Server), or being stored in a database (Sql State). Session data is retrieved for each and every request. This is a total performance killer.
If you really need to pass that much data from one page to the next, evaluate your consistency needs. If it's really transactional, perhaps you need to bite the bullet and store in a database. The other page can retrieve if necessary.
Most databases can (effectively) store any amount of data you throw at them, but don't abuse the database if you don't need the consistency a database gives you. Off the top of my head, I'd go for around 8k of data. I recognize varchar(max), etc, but you need to evaluate the tradeoff of storing all that (transient) data, log space, etc.
Otherwise, there's nothing wrong with creating a temporary file on a shared network disk and passing a token around. Use a guid and the date to generate a unique filename.