I've just been implementing a comment system, which allows limited subset of Markdown formatting. I decided to store both original document and the resulting html, which goes through escaping, markdown and htmlpurifier, which strips everything unwanted. When the comment is edited, user gets the original document and the html version is shown on the site. It would be safer to do the html when outputting, but I decided this way for better performance.
The thing here is that if something goes wrong and malicious code ends up in the db, I have to go through every comment and clean them vs. just changing the code which cleans them way out.
Most applications these days are more read-intensive, so there's a good pay-off for performing data processing as it's being prepared for storage. And I've been reminded (the hard way) time and again that the sooner I clean/correct data, the less likely it is to hurt me later.