I have been experimenting with IPv6 using a Windows7 client with the default Teredo IPv6 tunnel enabled.
I can reach IPv6 hosts (ipv6.google.com & www.v6.facebook.com) successfully using PING -6. I can also make HTTP requests to these hosts successfully using a Python script (using an IPv6-based socket).
Using Firefox/Chrome/IE doesn't work. A packet capture shows that these browsers are making DNS A queries whereas my Python script results in an AAAA query to resolve the Ipv6 query successfully.
Update 1: I tested with the (very useful) link that Matt suggested and got the following information:
You also appear to have Teredo enabled. You did successfully connect to an IPv6 site during this test - but only when forcing the connection by connecting to an IPv6 numeric address, instead of a web site name. This setting will not help or hurt you going forward to reach IPv6 web sites. Teredo (a tunneling protocol for Windows computers) advice will be posted hopefully soon
Update 2 I've concluded that the answer to my question is 'by not using teredo for IPv6'. This page contains the following statement at the bottom:
Due to current absence of Teredo relays on the Internet, connections to native IPv6 addresses are unlikely to succeed over the Teredo interface. If WSAConnectByName is called, Windows Vista will not issue AAAA queries when Teredo is the only IPv6 capable interface available. This ensures that native IPv6 addresses are not obtained as a destination and that connections are attempted over IPv4, which has the highest chance of success. In order to obtain IPv6 addresses when Teredo is the only IPv6 capable interface, an application must explicitly use the DnsQuery API for AAAA records.
This means that when an application resolves a hostname to an IP address, Windows will not issue a request for IPv6 records (AAAA) if teredo is the only IPv6 access available unless the app specifically requests an IPv6 address. Most apps will not do this as the best practice is to query for all types of address (eg by passing AF_UNSPEC to getaddrinfo)
I have set up alternative IPv6 tunneled access using the free service from Hurricane Electric and can now browse over IPv6 to my hearts content :-)