I am really into Kevin Barnes' article “To Rewrite Or Not To Rewrite”. He is on the right track about the challenges and tactics for a rewrite of any complexity. Chad Fowler is also exploring the big rewrite, and has fun things to say in a whole series of postings.
Rewriting a system too soon can be a waste of resources. One of the points of SOA is to allows services to be rewritten as needed, not just because a cool new technology can come out, but because there is value to be gained from doing so. For example, one of the best reasons to rewrite a system in a new language is if that the cost of extending the rewritten system will be less than the cost of maintaining the old one.
However, another factor is that near the end of the lifecycle of any system, a time comes when a rewrite may no longer be possible, without impacting the current operations of the existing system. Once you have reached a “development box canyon”, your options are limited, and all of them painful. What do you mean, “we”, kimosabe?