In the past I’ve worked on projects where we’ve tried to build with a contract first approach. As Drew says, in some ways this is no different than producing any other service-like API and thinking in isolation about how you will interact with some code usually improves the design above the “whatever falls out of the mix” alternative.
I think the issue of tools support is interesting. To be honest the way I’ve usually gone about this is to write the outline ASMX service code and associated message classes while checking the generated WSDL to make sure it looks how I want. It’s too much trouble (and too hard to teach other people) to write the WSDL by hand and work backwards. Some design tools to write the WSDL and the skeleton code at the same time would be useful but until we get something mainstream that does that, I’m not too unhappy with the current situation.