I've looked this over and used within my own proof-of-concept project and all works as advertised and looks quite nice. Thanks for tackling this!
My only comments/questions are minor:
* For both radio and checkbox, the radio-bezel and radio-bezel-selected images repeat behind the entirety of the title. Investigating the DOM, i can easily fix an instance in place by setting 'background-repeat' to 'no-repeat' as opposed to initial which is the default in a recent WebKit nightly. Investigating a bit further, I see ThemeDescriptors.j creates a CPColor using the class method "colorWithPatternImage" which as expected sets _cssString to something that would lead to a repeated background. Am I missing something obvious or shall I log a bug against this?
* I don't have major comments about abandoning a more Cocoa-like API, but having looked in ThemeDescriptors.j for example use and having overlooked the "Designated Initializer" comment within CPRadio.j, I'd vote for some liberal copy paste of this email to steer future users that haven't seen this post towards radioGroup usage and why it's important and why abandoning the Cocoa-way makes more sense here. I can add a bug for this as well, if desired.
Thanks!
Andrew