You can use something like SIPDroid and a service from a SIP provider to do this. Just to play around with it I created a
SIPGate account (free phone number and 60 outgoing minutes) and configured SIPDroid to use their service.
What you can do is create a Google Voice account and forward your Google Voice number to the SIP phone number, which in turn forwards to your cell phone using SIPDroid which runs on your Wifi. Incoming calls are free and outgoing calls after the first 60 are 1.9 cents a minute. Calls from SIPGate user to SIPGate user are free.
There may be a better SIP provider out there that's cheaper - I didn't look into it much more than setting it up and making a couple calls for fun.
I hope Google re-releases Gizmo5 soon - which would allow you to do this much easier than forwarding through two services.