The a strategy you could take would be to load the file from the file system into a stream, and then BinaryWrite the file to the browser giving it a different filename. This would involve making a separate web form to which you would pass a the filename and probably a date/time to ensure the link can only be used once in say, 1 minute or so. This web form would then perform the BinaryWrite for you, presenting the file to the user.
The code to present the file to the user would be along the lines of the below. (No need to reinvent the wheel, this code is from http://www.eggheadcafe.com/articles/20011006.asp
FileStream MyFileStream = new FileStream(@"d:\inetpub\wwwroot\small.pdf", FileMode.Open);
FileSize = MyFileStream.Length;
byte Buffer = new byte[(int)FileSize];
MyFileStream.Read(Buffer, 0, (int)MyFileStream.Length);
Response.AddHeader( "content-disposition","attachment; filename=MyPDF.PDF");
Notice the "filename=" in the header added to the Response.
This would be where you present your altered filename.
Hope this helps,