Have you considered setting up a paypal account? This will allow him (or any else) to pay you by credit card. The currency conversion will happen automatically via the credit card bank. Most don't charge a fee and give a fair exchange rate but this should be checked. Paypal would charge you a small fee similiar to what you would have to pay if you were a merchant set up to accept credit cards.
As for cashing a Canadian check in the US, it varies greatly from bank to bank and region to region. All banks are capable, but here in the middle of Indiana, I have not found a bank that does not charge a fee (around $20 bucks I think). If you are closer to the border or an international banking center, you should be able to find a bank that won't charge you a fee. Also beware that it may take a long time for the check to clear.
It is also possible to get a international money order or similiar in any currency you desire. All this does is switch the hassle and fees from the person recieving the funds to the person sending the funds. www.paypal.com
Here is a place to check the current exchange rates: http://finance.yahoo.com/m3?u
Current 1 US = 1.567 Canadian
This can change minute to minute and your bank might use a slightly different rate. But aproximately if you were charging $1000 US you would want $1567 Canadian. (AmountUS * 1.567 = AmountCanadian)
If he sends you a check for say $1567 Canadian (currently worth $1000 US) by the time you cash it, it could be worth plus or minus a percentage or two. You basically become a currency trader for a short while. Hold on to it a while and see if you can make some extra bucks if you think US dollar will weaken against the Canadian dollar:)