I thought I might share with you some of my experiences, in case you want to go ahead and create your own skins. These are just simple tips, not at all meant as laws.

AMOLED screens
Due to the way it's designed, AMOLED can be very difficult to work with. With just 2 full subpixel units per RGB block (each G is shared with its neighboring blocks,) symmetric colors (same level per channel) can look different than on your desktop display. I mostly try to avoid grayscale all together, because physically, AMOLED is not able to display true grayscale. If you really must have grayscale, adding a little blue tint can help avoid that pinkish colors you see often on AMOLED.
Furthermore, black (#000000) also presents an extra problem. Since there is no real grayscale, tones very close to black simply get shifted to blacks, hence some ugly color-banding or cutoffs. My Dutch friend, who designed the UI for DoubleTwist, got really frustrated with this.

HTC screens
HTC has a (in my opinion) bad habit of making their devices produce warmer colors by shifting the system color profile to lower/reddish temperatures. Photographs of people may look great, but if what you need is some kind of accuracy, it can be a bit frustrating. I always apply a cooling filter to counteract this. Applying a cooling filter number 80 with 4% density helps a lot.
Nine Patch
To some extent, Android is able to stretch gradients in 9patch up to twice its original size without breaking or showing ugly dithering and color-banding. Provided that there's not much information (not too many colors) in the png file, has the same Hue, and the gradient range is well far apart.
I've found out that by making my gradients translucent, and let it blend with the underlying background, I can get much smoother gradients. How Android compress buffers and apply dithering may have something to do with this. If what you need is just some illusion of lighting, then translucency is a good way to achieve it.
If you do need a more complex gradients or lighting effect, setting your ninepatch to stretch the lighter tones (instead of the darker ones) is recommended.
To avoid unwanted clipping or stray pixels, make sure to check areas near the 9patch cutoff. The magnify and eyedropper tools in your imaging program are your friends. I've found out that draw9patch included in the Android SDK couldn't help me much because the preview stretches don't represent actual SKP key sizes.
Default shadows
For symbols such as return, backspace, shift, the default Android style for drop shadow is 75% opaque with 3px radius and no XY offset.
Reference size
The image dimensions that come with the example skin are set to landscape view. What this means is, for example, a 75 pixels height (excluding the 9patch strips) will be the height of the key when in landscape mode. In portrait mode, this height will be stretched. The width though, is almost always stretched in landscape, and contracted in portrait mode. With that in mind, you'd design the keys to first look right in portrait (because it's the trickiest and probably the most often used position,) after which decide to optimize further for landscape if needed.
That's it!
Good luck and have fun designing your own custom themes. I look forward to enjoying your works
