Aaron asks if we believe in Contract-First. I sure do. BUT, he nailed it right on the head: It's very hard to do if you need to keep doing things by hand and avoiding the tools you use. It's extremely unproductive.
Furthermore, the existing tools don't make it any easier to choose contract first. Example: Why bother defining your message schemas in XSD outside, when ASMX will just recreate them? (pain to get it to use your existing ones). Furthermore, even something as powerful as BizTalk falls into this pitfall: when importing a webservice reference, it imports schemas as well. Import two services that share schemas, and try to use that cleanly... it sucks.
In all honesty, writing WSDL code by hand is a pain... I'd myself would settle for better support to deal with the message schemas... the rest of the bindings map fairly decently to the rest of the programming model, so it's not too bad....