EDIT: I answered this thinking you wanted a silverlight uploader, but it actually looks like you want a silverlight downloader. You can do the same thing I suggested for the uploader except use HTTP GET, or Binary WCF, or Sockets.
I have written a Silverlight 2 uploader with a progress bar and I modeled it after this one. It uses HTTP POST to sent the file to the server one piece at a time. The tricky part is that the bigger your POST, the faster the file will be uploaded, but your progress bar only gets updated once per POST. So I wrote an algorithm that dynamically tries to find the biggest POST size that takes less than a second.
If you want to use WCF instead of HTTP POST, that's probably better because Silverlight 3 now supports binary message encoding:
<customBinding>
<binding name="MyBinaryBinding" maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
<binaryMessageEncoding />
<httpTransport />
</binding>
</customBinding>
OR you could write a sockets implementation - Silverlight does support this but it can be a little tricky to setup and requires your server to have a port in the range 4502-4532 open, and port 943 open for a policy file.