I tweeted about my feeling that a lot of people find CSS hard, or illogical because they have never really learned it as a system. Instead, a lot of folk take a problem solving approach. They only look up the CSS they need to do the thing they are currently doing, as opposed to sitting down and learning the constructs that make CSS work. We don't tend to learn other languages like that.
This seemed to resonate with a lot of folk anyway, and the resources I mention in that thread may be useful to you.
I'm heading off to do day 2 of my CSS workshop for Chrome Dev Summit next, it's a bit of a late night in my timezone, but fun to bring this stuff to a crowd of folk from all over the world.