I listened to this week's "Hanselminutes" last night, to hear him interveriew Michael Feathers (author of Working Effectively with Legacy Code).
He shared some interesting patterns he had come across when dealing with legacy code. One was called the "Strangler Pattern". The idea here is that when you need to change the behavior of a fragile system, you create a parallel system alongside the legacy system. The new system siphons off some input that would have gone to the old system, and handles it directly. Over time, if more and more changes are required, the strangler system grows and the legacy system becomes more and more irrelevant.
I think I've accidentally used this pattern a few times-- it can be very useful if used the right way on the right project. Obviously not all systems would be well suited for this, but it's a good trick to have in your toolbelt in case you need it.