I don't have the book so I don't know about the actual implementation, but it could be by design. A Click handler of a button fires quite late in the page's life cycle. A theme on the other hand needs to be set very early in the process. So, if you collect the theme during a postback, you're too late to set it for the current request.
I dealt with the same problem in my book Beginning ASP.NET 3.5 in C# and VB
.NET by forcing a redirect to the same page after the theme was stored. This causes a new request which allows you to apply the theme in the early staages of the page life cycle.
Hope this helps,