Briefly wanted to mention SwitchUp from Irradiated Software.
When working on customer sites, I am able to have a completely different instances of most Mac apps. For example, I have separate Safari, Terminal, profiles for each of my customer sites with bookmarks, logins and history that are unique to that customers. Also, same for Mail (but this is less useful than you think).
This lets me quickly switch between customers without the hassle of booting a VM while still having all of my data and tools available. I only use this for certain apps but it is really useful to ensure that customer data is isolated in applications.
SwitchUp is a unique application that allows you to create, duplicate, and switch between multiple profiles of settings (preferences and data) for almost any application.
It's like a multi-user environment for every application.
How I think it works: Each Mac OS X application maintains profiles in the ~/Application Library director and SwitchUp manages these by switching pointers to those settings. The result is that applications like Safari, OmniFocus, Terminal and ToDo lists can be unique for each customer.