I was playing around last night with content-based SOAP routing, and I didn't realise how easy it was until I actually tried to get something working. I'm guessing it took me around 30 minutes to get a basic demo working, which is really fast, when you consider the massive benefits it can give!
For anyone that's interested, it's really just a matter of defining your own SoapHttpHandler, and registering it in the web.config file. The SoapHttpHandler class is in the Microsoft.Web.Services2.Messaging namespace (part of the WSE 2.0). Once you've done that, just override the ProcessRequestMessage method, and then code in whatever algorithm you want to handle the routing aspect. It's really that easy! I did a basic sample project that routes a web method call to different web services based on the requestor.
There are easier ways to do this (purely config file based), but you won't be able to do content-based routing without a little code (from my understanding). I managed to hook this up with about 10 lines of code, and it's completely dynamic from there.
Anyway... just thought I'd share that.
Happy programming!