By using hindlemail's fork of geckofx you will have to handle LauncherDialog.Download event.
This event has several parameters like url, filename, etc.
LauncherDialog.Download += LauncherDialog_Download;
////
void LauncherDialog_Download(object sender, LauncherDialogEvent e)
{
string filename = e.Filename; //do something with filename
string url = e.Url; //use webclient to download file from this url
}
Even with this you will not be able to download files from secure sites like dropbox or facebook but it will download something, better than nothing. I don't know much about xul so I also has a hard time downloading files.
I tried this too:
void LauncherDialog_Download(object sender, LauncherDialogEvent e)
{
WebBrowser ie = new WebBrowser();
ie.Navigate(e.Url);
}
It will show Internet Explorer download file dialog if file can be downloaded that way.
Probably cause of request headers or something. I also used Fiddler to find out what headers Firefox sends to server but I found nothing useful.