I have a toll-free number through the long distance company I use - Americom. It's 8.9 cents a minute. The only downside is you tend to get a lot of "wrong numbers" - people trying to call some business who get flustered when you just say "Hello" and then they hang up. But those only cost a couple of pennies, though. And if by chance you ever get pestered by someone abusing your toll-free number, the phone number of everyone who calls it is listed on the bill, so you can exact your revenge if necessary.
I don't know why you couldn't redirect it to another number if you moved.