OK, Well the answer to this IS to use WCF. It isn't as scary as it sounds and my solution works better than I could have expected.
The things that I would stress to someone trying to do what I was faced with is are:
Obviously, create a server application to host AND ONLY HOST the service. I tried doing fancy things such as using the server app to maintain a UI for the service - status, what it was doing and to/for whom. DONT!. Just dont.
Keep the connection open between client and server open for ONLY as long as needed. Any longer and the channel risks faulting and after many hours trying to sort this out, trying to recover from a fail, you're better off trying to write instructions on how to herd cats. Rethink your problem. Open, use, close.
Anyway, I had to come up with a replacement to an ActiveX control that had a UI. I created 3 projects - the Server (for hosting), a client (for providing a user interface for the service) and a COM interface that interacted with the service (called functions, set properties etc) and an external application.
The first thing the COM interface had to do was to try to find a running instance of the Server (btw, implementing a single instance of a WPF application is by no means an easy feat, but this is off topic)
If one could not be found, it executed the Server app, waited and then opened a channel. This process was repeated every time the COM interface had to talk/wait for the interface (obviously, the Server app only had to be ran once). A ball-ache, but this avoided the dreaded 'channel is in a faulted state' syndrome. Previously, I would find the service could be hosted and a channel kept open for a COMPLETELY random amount of time - 1 minute, an hour, a day but the fault would happen even if the client/server were doing nothing. Since my service is controlling a production line in North America (from the UK) and if the interface goes down NOTHING gets made until it is running again, my priority was stability. So, far the words 'rock' and 'hard' deliriously spring to mind
So, to repeat, open, use, close.
Hope this helps.
MM
BTW I upvoted Blam's suggestion.