Are there any paradigms that describe how to save program state checkpoints that can be restored later? I was wondering if there were any paradigms that describe how to save "state checkpoints" in a program so that a user may go back and reopen a program to the given state. 

In my situation I see that there are many ways to do it each with their own drawbacks. I wanted to know if there is a way that has proved to have the best performance over most all cases of the problem?

What I think would be the most popular system is one that saves state changes, then when a user wishes to return to a previous state it walks the changes backwards until it reaches a specified time stamp reversing the changes along the way. 

Or is this problem just application specific.
In general you cannot do this. The state of your application might depend on the state of external systems, and you won't be able to go back. For example you can't go back to a previous saved value of time if your systems requires that your clock should be within a small value compared to other machines in the network.

So its not always possible, and when it is, it is definitely application specific.