I use Google Voice -- http://voice.google.com
You would need to use a US VPN or proxy to initialize it, as the option to sign up only shows up when you are using an American IP address. You can then call out or receive incoming calls via Google Hangouts, or use a VOIP adapter like ObiTalk: http://www.amazon.com/OBi200-VoIP-Ph...dp/B00BUV7C9A/
I also use LocalPhone, http://www.localphone.com
-- where I have Swiss and US DIDs, and their rates are very competitive. I have travelled the world, and have my DIDs forward to my local mobile. E.g. the charge to forward/call to Swiss mobile is 11.9˘ (US cents). Also for a VoIP client, I would highly recommend Zoiper, http://www.zoiper.com
I also have Asterisk and FreeSwitch servers on Amazon cloud, so I can have an IVR, and use FlowRoute and VoIP.ms for my SIP trunks.
Also, CallCentric offers free NY DIDs http://www.callcentric.com/dids/free_phone_number
- Just sign up with a non-US address,
so you would not be subject to E911 fees.