So I have a pretty good `rough-in` built for you.
Essentially, I’m extending Mage_Core_Model_Email_Template::getPreparedTemplateText() to work with `template_text` and `template_styles.` First, I convert the raw stylesheet into an associate array indexed by tag name (these become our CSS selectors). I then take advantage of the DOMDocument extension to convert the raw template text into a DOMDocument object.
By traversing the prepared stylesheet array, I’m able to make calls to DOMDocument::getElementsByTagName(SELECTOR) and DOMDocument::setAttribute() to fold CSS into the elements. Then, we can dump the finished template back out with DOMDocument->saveHTML().
I’ve attached the source code for you to have a look.
At present, the attached helper method getCssObject() doesn’t support the full gamut of CSS selectors. Only element selection is possible (TD, P, A, BODY, etc.), but I feel that global rules are sufficient. If you need to target one specific element, you can just code the inline CSS yourself in the template.
Hope this helps!