A quick look at the javascript on the firefox page reveals:
// 2. Build download.mozilla.org URL out of those vars.
download_url = "http://download.mozilla.org/?product=";
download_url += product + '&os=' + os + '&lang=' + lang;
So just change your url from:
http://www.mozilla.com/products/download.html?product=firefox-3.6.3&os=win&lang=en-US
to
http://download.mozilla.org/?product=firefox-3.6.3&os=win&lang=en-US
So now I will check the headers to see what we really get...
$ curl -I "http://download.mozilla.org/?product=firefox-3.6.3&os=win&lang=en-US"
HTTP/1.1 302 Found
Server: Apache
X-Backend-Server: pp-app-dist09
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0, private
Content-Type: text/html; charset=UTF-8
Date: Sat, 08 May 2010 21:02:50 GMT
Location: http://mozilla.mirror.ac.za/firefox/releases/3.6.3/win32/en-US/Firefox Setup 3.6.3.exe
Pragma: no-cache
Transfer-Encoding: chunked
Connection: Keep-Alive
Set-Cookie: dmo=10.8.84.200.1273352570769772; path=/; expires=Sun, 08-May-11 21:02:50 GMT
X-Powered-By: PHP/5.1.6
So this actually is a 302 redirect, so now use what is in the Location header as your new url to get the actual file. You'll need to figure out how to do a request and read the headers on your own(sorry I don't have much time). After you parse the location header, you can then strip out the rest of the location using regex to get the filename to save the file to as well:
>>> location = 'http://mozilla.mirror.ac.za/firefox/releases/3.6.3/win32/en-US/Firefox Setup 3.6.3.exe'
>>> re.match('^.*/(.*?)$', location).groups()[0]
'Firefox Setup 3.6.3.exe'
So to get the actual filename you will need to follow the 302 yourself. The code necessary for this I will leave up to you, but hopefully this will point you in the right direction.