I recently set up my own VPN network and wanted a generic solution with access to a number of countries, mainly the US, Canada and the UK. I wanted something that would work naturally with all the devices on my home network, including the Wii, Playstation, etc. The problem with a regular VPN services is that they only give you one country at a time, plus you will probably tunnel more traffic than you want. Your ISP is usually the best route for traffic that doesn't have to originate inside a specific country.
So I've got a number of VPS instances in different countries, all running OpenBSD. These routers are connected with IPsec tunnels. That's not really necessary (ip encapsulation would work just fine) but gets me around national packet sniffing (Australia, I'm looking at you). Then I use OpenBGPD to dynamically announce routes between the routers. Finding out the routes for a provider is easy: just lookup the whois information for an IP number and you get the corresponding CIDR. Add that route to BGP and it's visible across the network in seconds. You also need to forward the appropriate DNS traffic, to get around the load balancing based on originating IP used by some CDNs.
This solution may seem too complicated and overkill, but it works incredibly well. You could of course achieve the same thing by having multiple VPN connections from a single router and add a bunch of static routes. But where's the fun in that?
As an added bonus, it's trivial to set up redundant gateways to the US and load balance traffic between them. This is a natural feature of BGP: if a router goes down, the BGP connection dies and traffic is routed through another path. Since OpenBSD is very light, I only pay for the smallest VPS instances, usually 128MB ram and a tiny bit of cpu for a few $/month per instance.