well... couldnt you just declare a byte array, download blocks at a time and write them?
[VB]
Dim Data() As Byte = New Byte(InsertSizeHere)
Do
Length = WebStream.Read(Data, 0, Data.Length)
FileStream.Write(Data, 0, Length)
Loop While WebStream.Length < WebStream.Position - 1
[/VB]
Didnt test this, but you can get the jist of it. And if performance becomes an issue you could look into using asynchronious methods (i.e. use BeginRead(), EndRead(), BeginWrite(), etc.)
[Edit]I guess someone beat me to giving you the same answer, and I know you were asking about C# (not that it would be hard to translate). Oh well.[/Edit]