I don't have a solution, but some suggestions for investigating this issue.
If you have access to the Event log on the server, look for event log messages similar to:
"aspnet_wp.exe (PID: nnnn) was recycled because memory consumption exceeded ..."
If you see this error message, it means that the ASP.NET application was restarted because its memory consumption exceeded the threshold (which is set in machine.config and cannot be set for individual web sites).
Although, it's not clear whether thus type of error should still be happening in .NET version 2.0. Also, look for other ASP.NET errors in the event log around the same time.
In ASP.NET 2.0, there's a new attribute for the <httpRuntime> configuration section called requestLengthDiskThreshold. If any request body exceeds this number of kilobytes, the request will be buffered on disk. Note that the Microsoft MSDN documentation says this value is in bytes, but it is apparently in kilobytes. There is also conflicting information on whether the default is 256(KB) or 80(KB).
Also, this value should NOT be set to larger than the maxRequestLength value. If the requestLengthDiskThreshold value is greater than the maximum requestLength, the request body will always be buffered in memory, effectively disabling on-disk buffering.