I think you must have a landline to setup Google Voice (it did when I signed up a long time ago but that may have changed), but it also allows you to take and send calls via Google Chat and you are allowed to remove the phone from the list of phones in the setup page. What someone has done is write a plugin for Asterisk that pretends to be a Google Chat client and talks to the Google servers to connect to your Google Voice account.
Because Google Voice provides free US to US calls incomming and outgoing you now have a totally free phone number.
There are similar plugins for Asterisk for other psudo-VOIP providers (like Skype) that require you to use a special client to connect, it is just most other providers do not provide free outbound or inbound calls.