You could implement something like this with custom site settings.
Just have your templates use site settings and then have those settings point to the actual CSS files or CSS resources.
For example, instead of a line like this in your template headers:
<link rel="stylesheet" href="assets/templates/screen.css" type="text/css" media="screen, projection" />
You could have lines like this:
<link rel="stylesheet" href="[[++css_screen]]" type="text/css" media="screen, projection" />
Then you can upload all sorts of different CSS files (or create new CSS resources) and simply change your custom site variables to change your style.
To simplify this for an end user, you could create chunks that have all of the necessary head information for each style, all of your CSS links. You could then have a single custom site setting that uses the name of the current style chunk. Your user would just change that site setting to "blue" or "green" or "metalic," etc. The head in your templates would have something like this:
There’re probably many other ways to do something like this with a site setting or two.