As of Winter ’14 release, email templates used with approval processes (e.g. email alert sent upon approval or rejection) can include {!ApprovalRequest.field_name} merge fields. For example {!ApprovalRequest.Comments} merge field returns the most recently entered comment in emails for an approval step.

However, these merge fields do not work in visualforce email templates. Thankfully, Pradeep on the Salesforce Developer Forums came up with a solution to use a visualforce component in the template backed by a controller that queries the approval step information. Ingenius!

I’ve included gist of my rendition of the apex class, visualforce component, and usage in an email template. I hope this saves you the headache and trouble I went through!