I'm also searching for an answer to this since I want to do the same thing. I haven't implemented it yet, but I'm going to try using the following logic: create a number of master pages each matching a theme. Then I'm going to try to put the theme name and the master page name into a variable that's stored in the database which can be retrieved from the database before the page renders.
I'm coming from PHP, and I know I can do this there, so hopefully I can do it with ASP.NET. I'm just learning ASP.NET 2.0, so I have more "logic" than applicable programming skill right now.