First, Ideally, my templates use the same structure as my main theme, however, they simply use a different stylesheet and images.

Currently, the way I allow changing the look of the site is with stylesheet switching.

I simply have a folder under my main theme called "styles", then under that I have a single folder for each of my "skins". Inside each skin folder is a style.css along with some images.

The way it works is that I've placed some code in my main theme's header.php file, so that it reads the value of the currently active skin from the options database, then loads the stylesheet for that skin like so...

In the above example, the active skin is "skin1" so I'm always loading...

"...mytheme/styles/". get_option('active_skin') ."style.css"

This works exceedingly well, and allows me to place a simple skin switcher widget (a pulldown menu with thumbnail display) inside my function.php file to allow the admin user to easily switch between several skins that completely change the look and feel of the site.

The beauty of this approach is that the selected theme and underlying markup remains unchanged, so I'm able to create a variety of styles using predictable markup. Sort of like CSS zen garden. Same markup, thousands of designs. All that changes is the stylesheet and images.

However, the one downside to this approach (at least with WordPress) is that the selected skin applied to the whole site. I'm unable to apply one skin to the home page and one skin to a special page that might need a completely different look and feel.

If there was a way to add some code to each skin folder so that it would appear in the "templates" drop down menu in the page editor, I'd be able to do exactly what I want.