I'll post a request to a WCF MSMQ service, hosted in IIS 7 WAS. There is an awesome article how to set it up.
Long running tasks using external resources have a high risk of failure. The biggest mistake developers often make is to assume that hardware and networks have unlimited capacity and are very reliable. It is often not.
It may be problematic, even catastrophic, if the long running process is interrupted by momentarily loss of network connectivity or if the remote server being rebooted. If your long running process includes additional processing, like to unzip the file, or analyze it, you may run further risk of failure if there is not enough memory to perform processing. Users may submit too many requests and there isn't enough resources available to handle the concurrent issues. If you let your ASP.NET MVC application do the processing through async controllers, then you might be surprised when your long running process is interrupted when IIS recycles the working process.
MSMQ 4 does a rather good job to mitigate these risks. If the process fails, you can retry it a couple of times before giving up. You can learn how to set that up here. You can use application specific deadletter queues to handle the case where the process failed after a number of acceptable attempts. This is important for operational staff to diagnose issues. You can also use this scheme to notify a user via email that the process failed (or succeeded), even if the machine where the request originated from is turned off.
Hosting it in IIS rather than a windows service offers additional capabilities. For example, the IIS worker process can be recycled should it become deadlocked or exceed a memory threshold. The latter may be an issue when you are using some native code to perform processing. You can recycle it every four (pick your timeframe) hours. The latter is rather important when working with large blobs of managed memory because over time the large object head gets fragmented so much that it becomes nearly impossible to manage allocate enough memory for another large request. You may find that a WCF service hosted in a Windows Service may suffer of this problem.
In reality it depends on how reliable you want that background process to be. If not, using WCF, MSMQ and IIS may simply be overkill.