[G2 and Desire Z Android Development] crestofawave:
If you want help or tips about under/over-volting I suggest you ask nik3r, he's a lot more knowledgeable on this matter than me. You can PM him or even ask at his EliteMod ROM thread.

To help with battery life you'd need to set up some profiles so clocks lower as battery percentage degrades. For this, you can use some apps. I'm only going to give a quick rundown about 3 ones I've used, they are SetCPU, CPU Tuner and the Virtuous OC Daemon (VOCD). Keep in mind that this is all personal experience/opinion and your results may vary. So,

First off is VOCD. Since it comes with the Unity kernel, you'd think it would be a good idea to use it. And it is, VOCD is a really good option If you don't want to mess around too much. It's rather simple to configure and it works wonders. However in my opinion, the lack of features such as profiles (it does have profiles but it's a set amount and compared to the other two is lackluster in that aspect) makes it less useful than the two below.

Second comes SetCPU. I've spent a fair amount of time using it, and It was a great app. It can be found in the market and bought for a set price, or be downloaded for free from the developer's site. About it's only difference when compared to VOCD is that it offers more flexibility when it comes to profiles. You can set as many as you like, and also set a "Priority" for them.

Now, to explain this I have to make an example. Assume that you have set up two profiles on SetCPU, #1 to set the max clock to 800MHz when the phone has less than 60% battery left, and #2 to set the max clock to 500MHz. The problem would be, if the phone is both under 60% bat and the screen is also turned off, which profile is SetCPU going to use? This is where "Priorities" come in. So, if profile #1 has a priority of 40, and #2 has a priority of 60, if #2's prerequisites are met then all profiles with lower priority than #2 (in this case, #1) are going to be disregarded. This gets around a lot of issues, and at first glance, it may look as a good concept, but I've also found it to be lackluster. It introduces some problems when it comes to profiling and (in my opinion) it is a bit of a mess when you want to change things.

Lastly, what I am using right now is CPU Tuner. It's a lot like SetCPU but it has a different (perhaps better?) way in managing profiles. It has a different concept, which consists of Triggers, Profiles and Virtual Governors.

So, starting off, a "virtual governor" is the same thing as the ordinary counterpart. It allows you to set the (actual) governor, and the powersave bias. I'm not entirely sure what the powersave bias does behind the scenes, but what it offers is choosing a balance between performance and battery life.

Afterwards, comes the profile. In a profile you can set a virtual governor, the min and max frequencies of the CPU, and services to enable/disable (those are Mobile Data, 2G/3G, Sync, WiFi, BT and Airplane mode). You can set as many as you like.

Lastly, the Triggers. The triggers are the ones supposed to set the actual profiles. How it works is, if your battery percentage is above a user set percentage, then the "Trigger" sets some rules. Those rules essentially define which profiles are going to be used for various states of the phone (these include when the phone is on battery, on AC (charging), when the screen is locked, when a call is in progress, and finally, when the battery is hot). Again, you can set as many as you like.

I find this concept to be a lot more versatile and easier to change when set up. It's a lot more tidy too. It may be a bit confusing at first but after spending about 10 minutes playing with it you'll figure it out.

Take the above information with the fact that I don't find any of the three options above bad in any way, my comments are personal opinion and you may not share it! So please try all three and decide for yourself!