I'm preparing for a new contract (with Barclays Global Investors) where I'll be helping to improve a software developemnt process in a group that has many years of existing code, so I've been reading Michael Feathers new book "Working Effectively with Legacy Code" (http://my.safaribooksonline.com/0131177052).
So far, I really like the book - it quite modern, coming from an agile/XP approach and consistently emphasizes that the basic task is to get the legacy code under a test harness, so that changes can be made with fewer ulcers.
The book goes into many different examples of how existing code is resistant to being testable, and then shows (usually two or more) approaches for overcoming or workign around those problems.
Another reason I like that the book is that Feathers consistently emphasizes how hard this is - no magic solutions, ugly compromises often required, etc. but that you can make big progess out of many small steps.