I know this is probably not the answer that anyone asking this type of question wants to hear, but it's absolutely the answer that they need to hear. The problems with the implementation that you note in your question are exactly the kinds of problems that run rampant with this type of thing.
Any time that you go about changing the look and feel of standard Windows controls (and especially something as complicated as forms), you're bound to run into problems. There are all kinds of behaviors that users come to expect because they've been a part of the way Windows works since the very beginning. Some of them are big and obvious, and others are minor and trivial. Trivial, that is, until you try to use them out of habit and find that they don't work.
This is the reason that users get frustrated with things like custom themed or "skinned" applications. Personally, I all but refuse to use them, and I'm not the only I know who feels that way, from power users to grandmothers. They don't help you to work more productively, and in fact, they often hamper exactly that. And it's hardly worth putting up with the compromise because most skins just don't look all that good in the first place, especially not to the subjective aesthetic preferences of individual users. For example, you might skin your application in a nice-looking blue color. But what if I hate blue with a passion? I'm not going to be very happy when I'm using your app, no matter how beautiful you/your designer think it is. What you call "fancy", others might call anywhere from "distasteful" to downright "ugly".
By far the best option is to let the user choose the application's theme. And you don't even need to build a theming system into your application in order to allow for this. Windows has allowed users to customize their system theme since the very beginning. It started out as simply the ability to change the colors used for all on-screen elements, and it's evolved through Windows XP and beyond to a full-fledged theming engine. Stick with it, and resist the urge to tinker. Making your app stick out like a sore thumb is not a good thing here. You want to blend in with the rest of the apps on the user's computer. Familiarity translates directly to ease-of-use and enhanced user experience. It also means less tech support is required from your company to support your software that you just had to make look different.
You just don't get enough value out of this to justify the problems, limitations, and support nightmares. Focus on making your app work better, rather than just look better. Users really appreciate that far more, even if they won't admit it. The best changes are the ones that no one ever notices.