One of my contacts has an unusual name which Google Now has never been able to understand.
How can I get around this (apart from asking the person to change their name)?
I'm using "send sms to [person's name]".
Without changing the person's name in their contacts, adding a "phonetic" name appears to work.
If the contact is synced to your Google account, you should be able to re-name it to anything you wish. The easiest way is to do it via the web:
Google Now should now be able to recognize the contact by its new name.