I have done this on XP, so i am not sure if it will work on Vista. Before you read any further, this tutorial requires
Resource Hacker (every programmer should have it in my book). That is a free program which can modify the resources of executable and libraries, which is exactly what you will be doing in this tutorial. You also need an image editor like Paint Shop Pro or Photoshop, but if it really comes down to it, Paint will do just fine. Now, open resource hacker, and go to File->Open. Set the filter to All Files, and open an existing .msstyles file (they are stored in the
WINDOWS\Resources\Themes\ folder). Make it either a copy of one you like, or one you don't care about, because you will be radically changing it. The first thing you will see when you open it is that the tree view on the right of resource hacker fills with items. Each of those items represents a category of resources stored in the .msstyles theme. This is a list of all the items you should see:
COLORNAMES
COMBODATA
FILERESNAMES
MINDEPTH
ORIGFILENAMES
PACKTHEM_VERSION
SIZENAMES
TEXTFILES
Bitmap
String Table
Version Info
That list may vary depending on what theme you open. However, one item will always be in any of them, and that is the only one you need to be concerned with. It is called
Bitmap, which holds all the bitmap data stored in the theme. Expand that node, and you will see that the tree view floods with 100+ items. You will see that each of the names of those items is in the format
STYLENAME_BITMAPNAME_BMPThe STYLENAME part represents the name of the color theme that bitmap is used in. The BITMAPNAME item represents what item that bitmap represents. For example, the item that represents the standard 13x13 check box is called CHECKBOX13. The _BMP extension on the end is just there, and doesn't mean a thing. So, in XP's default Luna theme, with the Blue color theme, the name of the 13x13 check box is called BLUE_CHECKBOX13_BMP. Expand that item and select the one item under it. You should see something like this:

As you can see, that pic represents all the possible phases the check box can be in. Replace that bitmap with one in the same format, and you can make it look like anything you want. To replace a resource, select the resource you wish to change, right-click on it and select
Replace Resource.... A box should show. Click
Open file with new bitmap..., and it should be straight forward from there.
That's how to modify themes. You already know that the default check box bitmap is named CHECKBOX13. Here is a list of other common controls and their names:
Button Control - BUTTON
13x13 Radio Button - RADIOBUTTON13
Group Box - GROUPBOX
Taskbar Tray - TASKBARTRAY and TASKBARTRAYVERTICAL
Toolbar Background - TOOLBARBACKGROUND
Trackbar Slider - TRACKBARDOWN13 and TRACKBARHORIZONTAL and TRACKBARUP13
TreeView Expand/Collapse Button - TREEXPANDCOLLAPSE
Taskbar - TASKBARBACKGROUND and TASKBARBACKGROUNDVERTICAL
Some coltrols may have more than one bitmap that make them up. Example, the combobox button control is made up of two bitmaps, one that represents the background and one that represents the arrows
Button:

Arrows:

I wish i could explain a bit more, but the layout of the msstyles file varies greatly from theme to theme. Play around a bit in Resource Hacker, and it shouldn't be hard to figure out what pictures represent what. Once you know what they do, you can change them to whatever you want! Just imaging what you could do!