Most likely it's because your SMTP server isn't configured to accept or relay mail for the recipient's domain.

Also, sometimes SMTP servers get configured to only accept messages from their own IP, or something similarly restrictive. This is especially true for IIS when only IIS is sending mail through the server.

I've managed to fix the problem but have no idea why this fixed the problem and would appreciate further input.

In the DNS control panel I removed the SPF record for the domain in question and now email is coming through to the account. To test that this wasn't just a timing issue with some other change that had been made I added back the SPF record and tested that email failed and then removed it again and tested that email then came through.

Now SPF is used when sending out-going email and should have nothing to do with the receipt of email so I really can't work out why the removal of the SPF record associated with the domain would allow me to receive emails.

If anybody has any idea why this worked I'd love to hear your thoughts.

This is just a stab in the dark here but if you were sending the email to the account in question from an email address on the same domain but through a different email server then the SPF record could very well come into play. An example of how that would happen is if you use an outbound email service, or you send email from a contact form on your webhost but make it appear to come from the same domain etc.