The most common problem is that IIS / ASP.Net user doesn't have enough rights to write a file to the Upload directory.
It's not possible to give a more detailed error message in Silverlight.
Silverilght makes a webservice call. If something goes wrong, the service will send a certain HTTP error code. But these codes are hidden from plugins running in the browser. All Silverlight gets is HTTP 200 (OK) or HTTP 404 (not found / something went wrong).
That's it, nothing more.
It's too bad, but that's why the message is not more detailed, like "Not enough rights" / "Service not found" etc.
So when problems like these occur, the only thing you can do is find out if the problem is:
A) Silverlight can't access the webservice
B) Something goes wrong in the webservice
You can easily figure this out by debugging or writing some quick logging code in the WCF service.