Tens o teu site a funcionar... a solução torna-se bastante simples.
Sabendo que um tema, é uma pasta com imagens, CSS e uma miniatura.
1. Crias uma página que faça o upload de um zip com o conteúdo do tema, de de seguida faça a sua decompactação para a pasta de temas.
2. Na página de temas do utilizador, mandas executar a lista de pastas de temas, mostra o nome do tema e a miniatura.
3. O utilizador escolhe o tema e grava a opção escolhida na base de dados
4. quando for mostrada a página do utilizador é mostrada o tema que este escolheu anteriomente.
Em ASP.NET faz-se isto num instante. EM PHP também não deverá ser muito dificil.
Edit: Tenho isto a funcionar num multi-blog que criei em ASP.NET para um cliente