Just some more ideas... dEVIANT's suggestions are good enough.
Some time ago I found this link, about "
etc snapshots with git". Basically any version control will do. I myself prefer
GIT,
Subversion, and
Mercurial.
The basic idea is to use such a system not only for "source code", but for other files as well. I am currently working on setting up an environment for our company. Not only for "/etc" but other directories with settings as well. So maybe You can do this for "home" directories as well (not the complete one, just for the settings).
The only problem is where to store those repositories. A local copy may not be sufficient enough. Recovering a broken system over the internet may be also very troublesome.
For my private stuff I have a (linux) server at home and a (windows) server in the internet. I use my windows server with "VisualSVN", because this is very easy to install. I didn't invest my time to setup a git repository on windows.
On the other hand: this solution is not good for system restores... maybe have a look at
Mondo Rescue and
Partimage.