CSS может быть выведен из скрипта PHP, поэтому просто сделайте что-то вроде:
css.php:
<?php
session_start();
$theme = load_theme($_SESSION['userid']);
header('Content-Type: text/css');
?>
body {
font-family: Verdana, sans-serif;
color: <?php echo $theme['base-color']; ?>;
}
...
«Тема» может быть просто палитрой цветов или у вас может быть набор таблиц стилей, которые более радикально отличаются. Пользователь выбирает один, а затем по желанию выбирает цвета для него.
Все это должно поддерживаться правильным версионированием, поэтому пользователь загружает таблицу стилей только тогда, когда они изменяют настройки или базовую таблицу стилей.
Предварительный просмотр немного сложнее. Для этого вам, вероятно, понадобится настраиваемая таблица стилей именно для этой цели и использование Javascript для динамического обновления таблицы стилей на лету, чтобы пользователь мог сразу увидеть изменения. Это гораздо более существенная часть работы.