Twilio with calls routed to the free call forwarding Twimlet. $1/number/month, plus $0.03/min. The free $30 credit will keep you going for a long time.
http://www.twilio.com/faq/porting
But since credit's don't expire, and you can always find another use for Twilio in the future it is a good bet.
You can provision a throwaway number on a trial account if you want to test it for free.
I have created a URL in the format http://twimlets.com/forward?PhoneNumber=<my number>& and entered it into my app under Voice/request URL. Option is "Post". But when I call my new number (I have created a new number with another account) the call doesn't get forwarded.
Am I missing something?