You as a designer need to be flexible. If I as a developer say "that can't be done within the given time/budget/constraints", you'll need to rework or rethink some of your precious design.
I as a developer need to sometimes do some more research to make sure something can, in fact, be done, instead of relying on 10 year old preconceptions about what's possible and what's not. I may need to tell a client/pm that we're going to do XYZ visually and IE5 be damned because I've looked at the stats and 0.21% of the visitors in the past 18 months used IE5.
I've rarely seen true teamwork collaboration between designer/developers in the web world, and it's worse in the 'virtual team / freelance' world, because pretty much every project is a new set of people working together for the first time.
What's more common is a designer puts together some graphic design which is fairly impossible to recreate in browsers, then complains tirelessly that it doesn't look exactly 100% the same on every single browser, including their WAP phone, iPhone and IE6 on XPsp1, and proceeds to tell you about their cousin who made all this work perfectly 6 months ago because he wrote some javascript to make everything awesome. Then the designer coming back 4 hours before a demo/launch and telling you that the color in the footer on each page needs to be different, but they're going away on vacation in 10 minutes and "it's pretty simple, just look at the 19 mockups I emailed to you in February" (conveniently named 'XPJ59 client X here's slide #1.JPEG', etc).
Also more common is a developer who takes no notice of the designer mockups that were approved by 8 people over 2 months, and just does their own thing with CSS3, custom modified jQuery, and only tests on their custom Konqueror or Chrome beta release, then pushes to Heroku where only they have an account and rights to push.
Yes, designers and developers need to learn to work well together to appreciate the issues each faces. Web designers do, in my view, need to have a better understanding of web technologies, understanding the limitations and possibilities of the tech. I don't see how you can do that without actually, you know, learning how to code some. Developers should have a better idea of how to use graphic tools, and sit in on some meetings where designers are subjected to idiotic whims and endless debates on shades of blue to have a better understanding of why the designer is bitching about what should really be a 2 minute change for the dev (cause the designer will get it in the neck from 8 people if they don't).