There's nothing fancy about what WCF does to release callbacks on the UI thread -- it just picks up the SynchronizationContext and away it goes. However, to pick that context up properly, you must make sure to initiate the system after Application.Run. There are ways to do it prior to that time, but really, who are you trying to fake out? Probably someone, I'm sure.
If anyone is having problems with this, let me know. I'll be glad to write up some demonstrations of specific scenarios. They always make good sample code in documentation.