Video from Tony Robinson:
What Was Ham's Sin and Why Was Canaan Cursed
Here is the same parallelism graphically illustrated:
...and again in text for the search engines:
A: 6:9 - Noah was the only righteous man in a wicked generation.
B: 6:13-22 - God will destroy the earth because of its violence
C: 7:3-16 - Noah and family enter the ark to save their lives
D: 7:17-24 - All life destroyed in the flood and rain
E: 8:1 - People and animals saved because God remembered Noah
F: 8:4 - Ark rested on the mountains of Ararat
G: 9:20-23 - Ham committed a sexual sin while Noah was drunk
A: 18:23-24 - Abraham asks, Would you destroy the righteous with the wicked?
B: 19:13 - God will destroy Sodom because of the outcry against it
C: 19:14-22 - Lot and family leaves the city to save their lives
D: 19:23-28 - All people of Sodom and Gomorrah destroyed by sulfur rain
E: 19:29 - Lot and family are saved because God remembered Abraham
F: 19:30 - Lot and daughters settled on the mountain above Zohar
G: 19:31-37 - Lot's daughters had sex with him while he was drunk
This parallelism shows that Ham's sin was almost certainly sexual in nature, but why would Noah curse Ham's son instead of Ham himself? I think the two most likely explanations are that 1) Ham permanently broke the relationship of Noah with one of his sons, so Noah's curse against Canaan broke the relationship between Ham and one of his sons or that 2) Ham's sin was actually against his own mother, and Canaan was the offspring of that sin, much as Lot's daughters gave birth to Moab and Ammon through their sin.