There is an Exception Handling Application Block provided by the Patterns & Practices team at Microsoft. That stuff is usually pretty good :)
http://msdn.microsoft.com/en-us/library/ff650463.aspx
You can combine this with the Logging Application Block to create your own error logging mechanisms via their provider scheme. One of your logging providers could connect to the web service you provide.
Alternatively, and the way I've done it in the past is simply to serialize the resultant exception into an XML file on the client machine and inform them that an error report is available and to give it to their administrator. I've had a few of these come back from out in the wild, and most meant I could solve the problem - some were too finicky and not enough information was present in the exception. This could easily be adapted to post to a web service.
In the code, you then only have the one location - your unhandled exception handler - that results in this error report. All handled exceptions can safely be assumed to be standard behaviour, assuming you don't swallow exceptions in code where they aren't really being handled.