Rally is proposing a very collaborative way to create the Definition of Done: the team creates “items” that define when software can be released. then the team look at each item and decide which ones apply to a user story (e.g. approved by the product owner), a sprint (e.g. no blockers, no critical) and for a software release (e.g. KPI testing).
Here is the link: http://www.rallydev.com/toolkits/definition-done-toolkit, then click on “Defining Done Guide“.
This is a similar idea from Mitch Lacey, applying very well to deployment software onto production environment:
Last but no least, I have found some great videos by Ken Schwaber explaining the importance of the DoD and how teams, if not careful, create technical debt and are not done… really not!