Yeah, if HTML is disallowed in PM's, it won't parse, if you turn HTML on it will show correctly. Unfortunately there's no flag passed to determine if a single PM is in HTML or not, it parses the PM when being viewed.
At the moment the best idea I can think of is if HTML is disabled run the PM through the vB WYSIWYG converter to turn the HTML into the correct BBCode, but that won't do a complete job.
I'll come up with something