Alberto Savoia has written a series of four articles describing "characterization testing" - the process of writing unit tests to understand and work with legacy code.
One can't always start from scratch with Agile - sometimes it's used to salvage troubled projects, but Emanuel Gaillot notes that "What's tough about XP is, the more you need it to get your project in a better shape, the harder it is to start doing it." Can a team really afford to switch in the middle of a troubled project? Gaillot recently shared his approach to gradual XP implementation.
Ian Roughley shows how to use logging seams to easily create unobtrusive unit tests around legacy classes, without needing to edit class logic as well as avoiding behavior changes.