When you reinstall your operating system, OS X will ask if you want to restore from a Time Machine backup. just select your TM backup drive and it will install the OS fresh and then restore your data.

As long as you haven't setup any excluded folders, it will copy all of your data in all the places except system folders.

You can find the current list of _system_ exclusions at `/System/Library/CoreServices/backupd.bundle/Contents/Resources/StdExclusions.plist` It is an XML file you can open with any text editor.

Mine (Mac OS 10.5.8) looks like this:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
    	<!-- paths we do not want to include in a system backup -->
    	<key>PathsExcluded</key>
    	<array>
    		<string>/.Spotlight-V100</string>
    		<string>/.Trashes</string>
    		<string>/.fseventsd</string>
    		<string>/.hotfiles.btree</string>
    		<string>/Backups.backupdb</string>
    		<string>/Desktop DB</string>
    		<string>/Desktop DF</string>
    		<string>/Network/Servers</string>
    		<string>/Previous Systems</string>
    		<string>/Users/Shared/SC Info</string>
    		<string>/Users/Guest</string>
    		<string>/dev</string>
    		<string>/home</string>
    		<string>/net</string>
    		<string>/private/var/db/Spotlight</string>			<!-- old tiger location of the Spotlight db -->
    		<string>/private/var/db/Spotlight-V100</string>		<!-- old tiger location of the Spotlight db -->
    	</array>
    	<!-- paths we need to include in backup so we can restore disk structure, but don't want to backup contents -->
    	<key>ContentsExcluded</key>
    	<array>
    		<string>/Volumes</string>
    		<string>/Network</string>
    		<string>/automount</string>
    		<string>/.vol</string>
    		<string>/tmp</string>
    		<string>/cores</string>
    		<string>/private/tmp</string>
    		<string>/private/Network</string>
    		<string>/private/tftpboot</string>
    		<string>/private/var/automount</string>
    		<string>/private/var/log</string>
    		<string>/private/var/folders</string>
    		<string>/private/var/log/apache2</string>
    		<string>/private/var/log/cups</string>
    		<string>/private/var/log/fax</string>
    		<string>/private/var/log/ppp</string>
    		<string>/private/var/log/sa</string>
    		<string>/private/var/log/samba</string>
    		<string>/private/var/log/uucp</string>
    		<string>/private/var/run</string>
    		<string>/private/var/spool</string>
    		<string>/private/var/tmp</string>
    		<string>/private/var/vm</string>
    		<string>/private/var/db/dhcpclient</string>
    		<string>/private/var/db/fseventsd</string>
    		<string>/Library/Caches</string>
    		<string>/Library/Logs</string>
    		<string>/System/Library/Caches</string>
    		<string>/System/Library/Extensions/Caches</string>
    	</array>
    	<!-- standard user paths we want to skip for each user (subpath relative to root of home directory) -->
    	<key>UserPathsExcluded</key>
    	<array>
    		<string>Library/Application Support/SyncServices</string>
    		<string>Library/Caches</string>
    		<string>Library/Logs</string>
    		<string>Library/Mail/Envelope Index</string>
    		<string>Library/Mail/AvailableFeeds</string>
    		<string>Library/Mirrors</string>
    		<string>Library/PubSub/Database</string>
    		<string>Library/PubSub/Downloads</string>
    		<string>Library/PubSub/Feeds</string>
    		<string>Library/Safari/Icons.db</string>
    		<string>Library/Safari/HistoryIndex.sk</string>
    	</array>
    </dict>
    </plist>