I would tend to make the argument that swapping themes is not something I would do while entering data, but of course, I am biased given that I understand the side-effect of the behavior you described.
The reason for the self redirect is that theme influence happens early on in the page life cycle. If you change the theme on a client postback event and don't do a full redirect then you will possibly have some strange behavior as the theme is only 'half-changed'.
One thing you could do is to force an additional postback. Add a button that is not visible and use the
ClientScriptManager.GetPostbackEventReference method to get the client-side script for the click of that button and the
ClientScriptManager.RegisterStartupScript method to emit this to the page when you change themes. This *should* result in an immediate postback (as if you manually clicked the button) which will give you a fresh page hit with the newly selected theme. I'm not sure if the control/event validation behavior introduced in ASP.NET 2.0 will interfere with this or not. Worth a try though.
-Peter
compiledthoughts.com