This took me forever to solve on CM6, but I finally nailed it.
I had horrible battery life, where I'd be down 20% in 15 minutes and completely drain the thing with light use (some internet, very little phone, very little texting, forget about using maps/GPS) in about 5-6 hrs. I'd lose 30% during the night while I slept!
I was originally thinking that I needed to run a slower kernel, so I was doing various 800 kernels and setting it to 800 or even 700 with slower settings for screen off (250/250, 400/250, etc). My home (LP) was constantly lagging, being incredibly slow with no animations set on. Redraws were constant. I did try the code hack for screen redraws with limited results. LP would crash and ADW didn't crash but had some serious lag. This was with p3droid, chevyNo1, and jdlfg's kernels. I figured I'd try some different kernels and the lag was killing me so I said the hell with it, let's just go back to 1000. I grabbed slayher's 1000 and while it was faster, the wifi would not connect, so try something else.
Finally, jdlfg's 1000mHz kernel was the trick. Not only did I have the zip I was missing, but battery life is ASTOUNDING. I don't lose battery during the night (10% tops?) and I can go all day with the same use or more than before, and be down to maybe 60-70%.
Long story short: keep trying different kernels! Some are just way better for battery life than others. It took me a LONG time, but I finally found one that works.
I'm still confused why the battery life is so much better when I'm running at 1000/500 than when I was at 800/500. Any ideas?