The Template Switcher plugin was a great idea and worked well in 0.9.2.x, but unfortunately it completely freaks out in 0.9.5+ and can cause your site to crash completely. It was originally included in the standard 0.9.5 release but has since been removed. So you don’t want to use the Template Switcher plugin to do this.
I think that I would just create a simple plugin that checks for a cookie that will determine the CSS to use. It would run on the OnWebPageInit system event (so it can set a cookie before any output has been sent) and set a placeholder that you could use in a single template to select which CSS file to load. Something like this:
$userTemplate='your-default-style';
if (isset($_GET['style'])) {
$userTemplate=$_GET['style'];
setcookie("style",$userTemplate,time()+604800, "/", "", 0);
}
elseif (isset($_COOKIE['style'])) {
$userTemplate=$_COOKIE['style'];
}
$modx->setPlaceholder('userTemplate',$userTemplate);
Then you would just add something like
<link rel="stylesheet" type="text/css" href="[+userTemplate+].css?" />
to the head of your template.
You should probably also check that the value you get from either the GET string or COOKIE is in fact a valid CSS file in the plugin by comparing it against an array of valid styles or something, but this basic approach should work (and it doesn’t switch the template itself, which seems to be the root of the Template Switcher plugin problem).