Recently in Slashdot there have been a series of posts about the quality level of the software at various companies. They've had titles like "How can I make my team write better code?" or "How can we improve our code quality?"
I also subscribe to numerous blogs and MeetUps and User Groups where titles like "Do 'x' to improve" are fairly standard.
I might just be getting my jaded but I'm coming to the conclusion that there is one and only one thing that can improve the quality of the software you/your team produces. That one thing is better hiring. To quote Joel On Software..the only two answers after an interview are "Hell yes!" or "No".
By and large people either care passionately about the code the write ... or they don't. In over thirty years of doing this I can't recall a case where a "bad" coder read a book, went to a class, attended a conference or had a talk with management and suddenly started caring.
That's a bit depressing because I speak at conference and have published lots of papers! On the other hand, my papers and talks have been aimed at the subset of our field that already care and are just looking to hone their skills. Trying to convince someone that unit testing, proper naming, or coherent design was a good thing is just a waste of time. People either "got it" a long time ago or they're not going to get it. Sorry.
So, work to get your team to hire better people or go someplace that already does. I just don't see another option.