This isn't quite time travel, and it's not quite too expensive, and so on. Well, it's a nice idea, for sure, and it needn't be Java-specific either -- it generalizes.
Of course, you might need enormous amounts of memory or storage if you want to observe a busy process for a long time, but presumably one would only do use this tool for brief periods.