Its a multitude of causes; but basically the US economy is poor right now... (I think the most significant recent event was the crash in the US housing market due to sub prime mortgages) no one wants to invest their money in the US so they are placing it in more stable markets right now, ie. Canada.
Its not the first time that the CND dollar has been worth more than the US dollar, but it has been a long time (back in the 70s).