You should take a look to most CMS that include this kind of feature. What they usually do is to offer pre-defined layout sets with fonts, colors and some choice of structure (columns, full width vs boxed and such). Personally, I also offer a way to modify things further with extra HTML and CSS coding. Since this will only be used by advanced users, they can easily fine tune at will.
Leaving this decision to users is a big problem. Going back to the CMS samples, we get this claim almost every single day "I used a theme but can't make it look like the demo" or "I need to hire a designer to make the theme look as I want". Doh. The more choices you add, the less likely a regular user will be to make something that looks right. A designer has training, is a professional, knows the theory and the trends. Most users think their personal taste is amazing and unrivaled. Yet, they can't tell exactly why their site looks so bad. And the answer always end in... your coding. Simple as that.
So, this is what WE do:
if this is for a final user, we research and eventually train the user with a more customized CMS. HOWEVER, we always set some strict boundaries so the user can't go crazy. we simply don't let him break the site.
if this is for a broad user base, boundaries get even stricter and most layouts are pre-defined, even color palettes and combinations, at most we leave some font choices, where they can choose between 5 to 10 font families for headers and the same for text. We're the professionals, so we have to deliver a professional product, even if it looks as "limited".
Think about this: People don't like to assembly their furniture, they do it because it's cheaper, but 100 out of 100 times they would take a professionally built piece of furniture over some "build it yourself" crap. Giving some engines and metal won't make a regular guy a car engineer. So... why do it with sites? Sites may give an income many times the price of an Ikea chair, so why would anyone want to go this way? (Of course, unless you're selling themes on Envato or the likes, then you tell users "you can do anything because we offer 1,000,000 options!" )
If you want consistency, start by restricting options and make the whole thing consistent within your own rules, do not leave any room for randomness
EDIT: while more oriented to mobile, you might find some useful concepts in "Using Back-End Design to Create Customizable Front-End Mobile Experiences"