There is a cheap way to convert and save yourself literally thousands of dollars but it requires some sophistication on your part. You can negotiate a better exchange rate through a currency broker but at the end of the day you'll still get ripped off--however, it'll be "easy".
Here is the more sophisticated way to change large sums:
1. Open up a US and a Canadian trading account with a brokerage like TD Waterhouse and put the Canadian dollars in the Canadian account.
2. Find a dual-listed stock that has a very high volume, trading on both American and Canadian exchanges. Something like Magna or Royal. Preferably something with a high SHARE price.
3. Buy the stock in the Canadian account and simultaneously sell it in the American account.
4. Call your broker and have them "journal over" the positions to cancel out the shares. (The front line monkey that answers the phone may not know how to do this, or that you can do this, so ask to speak to a supervisor until you get someone with a clue. You can do this.)
You now have American dollars in the American account. The stock may have moved a few pennies between the two trades, which happened within a minute or two of one another, but that shift in value will likely be 1/10th of the spread that a customs house would charge you.
Of course in today's market there's actually a risk that in the minute or so it takes you to put the 2nd order in the whole market crashes and it's more than a few cents diffence--in normal markets that's less likely.
At any rate you can cut the exchange rate down to the bone very near the bank rate by doing this.