The merge fields are great to use when generating your templates. However, if you do not have a field populated with any information used in the field, no value would be inserted. It would be nice to be able to specify a default value that can be used in the merge field instead.
I believe that there is a way to do this using Coalesce. If a field is null, you can set the merge field to fall back to another field. To do this in your template, you would need to use a coalesce symbol after the first merge field that you would like to use. For example, you could have {Contact.Salutation|Contact.Forename|Contact.Surname}. I have not seen this documented, so have raised internally to get this updated for future queries.
Agree - should be pretty easy to set up a global and/or template-specific table so you can replace any missing merge field value with one of your choice for that field. What would be cool would be if whenever you inserted a personalization token in an email, you would get a pop-up displaying the global default (if any) and a template-specific replacement field. Global defaults could be set up by PROSPECT CRM with account admin override, and template-specific values could be changed by anyone with email content permissions?