It seems many people are keen to just make a wild guess or skim through a question too quickly and jump to the wrong conclusion. I think this discourages more considered responses because someone is less likely to read a question with several answers already. If you are diligent, you also have to read through all of the hasty answers to see if there is one worth upvoting or if it's worth creating a new one. I don't think downvoting would help either. What could be the solution?
I was just thinking about this recently. As I've become more used to SO, I've found that longer, more thought-out answers are almost always worth the time in terms of rep (not to mention feeling like I've helped somebody out). As a result, I've noticed a steady increase in my average upvotes per answer and my acceptance rate. 7 of my last 12 answers were accepted, which I figure isn't bad.
If you look at answers from Jon Skeet or Eric Lippert, those guys really take the time to teach in their answers. It's not just a matter of being knowledgeable; they break things down and explain them clearly instead of just dumping off some code. As a result, they get huge rep from almost every answer they give.
You can pick up some cheap rep by doing a drive-by of some code, but it's more profitable and time-effective to do a good job. Which is how it should be. Help a little, get a little; help a lot, get a lot.