The only reason I can see that this might send 2 emails is if you have multiple email addresses in the contacts.email column.
There is one issue with this trigger though, and that is that it does not handle a set based update. I recommend reading this article[/url] to see why that is important.