At the time this question was asked, version 10 was not out yet. The Front End of Mathematica 10 does have multiple undo, see the answer by John Fultz.
The Mathematica Front End's built-in Undo command can only undo a single editing step.
Has anyone implemented or seen implemented an efficient and comfortable multiple undo?
I have in mind ideas such as,
CellEventActions that keeps a stack in the cell context pushing the cell state every time a key among a list (brackets, @, operators) is pressed. Some other shortcut to recover older states (or a palette, or perhaps tweaking the front end's .tr files??)
I am not familiar at all with typical text based implementations and their issues. I guess it wouldn't be a practical problem to lose the undo state between sessions, would it?
So, has this been done, or is it doable or practical? What are your thoughts?