We used customs house (now part of western union), a FX company. Takes a bit to set up, but is ideal for large amounts, because the spread (the difference between buy / sell dollar of the currency) was the lowest, by about 1.5%. Those banks with "no fees" make their money on the currency spread, you know, often 3.5%.
Other Fx houses should be similar.
The other way I have exchanged is with my on-line investments. When I transfer a stock in CDN "in kind" to a US account, I am getting pretty much the exact exchange rate. It can take a few days to settle, and you need a way to withdraw the money after you transfer, then sell. This should work if you can find an investment brokerage that allows you to set up accounts in your chosen currencies.
Both of these are best if you are trying to transfer more than $25,000... And with that large a cash transaction, the small rate % savings can be worth the time and hassle (up to two weeks) to set it all up.
The CDN to US exchange -- there is a snowbirds buying club that people use to make large, low percentage cost purchases, and hand the savings back to members.