Assuming that your ISP supports IPv6 there are several ways to connect over ADSL. The main problem is the lack of consumer grade (and hence affordable) IPv6 capable ADSL routers.
One way around this is to use an ADSL modem which communicates to a separate router using PPPoE. Many ADSL routers can also be made to act as modems by switching them into bridge mode. In this arrangement the PPP link to the ISP terminates on the separate router rather than on the ADSL device and therefore it is this router which needs to be IPv6 capable. The ISP must support IPv6 on the PPP connection. The separate router could be based on Linux, m0n0wall or no doubt many other platforms but note that current releases of RouterOS do not support IPv6 over PPPoE (it is apparently in beta test for the 5.x release) so the otherwise excellent value RouterBoard products cannot be used in this way. I have not personally used this method.
Another method is to tunnel IPv6 through an existing IPv4 connection. This requires access to a tunnel endpoint at either the ISP or a third party tunnel broker and also somewhere to terminate your end of the tunnel within your own network. I have used this method with either Linux or m0n0wall running on an Alix board for my end of the tunnel.
Both of the above methods restrict the MTU of the connection. Using PPPoE takes a total of 8 bytes from the normal Ethernet MTU of 1500 bytes, resulting in a 1492 byte MTU for both IPv4 and IPv6. See On PPPoA, PPPoE, ATM and ADSL for more on encapsulation. For the tunnelling approach, the IPv4 MTU is unchanged at 1500 but the tunnel headers take 20 bytes away from IPv6 leaving 1480.
In order to obtain 1500 byte MTU an IPv6 capable ADSL router is required but currently there is no consumer grade product available. It is possible to construct one from a Linux system fitted with a suitable PCI ADSL modem card. I have previously used a BeWAN ADSL PCI ST card and although this worked I was disappointed with the ADSL synchronisation speed which was about 75% of that which an external ADSL router had managed. I also had to build kernel modules to support this card. Current Linux kernels support the Traverse Technologies Solos card although this is quite a costly solution and I have not used one myself.
So, finally, we come to the solution I am currently using which is to run OpenWRT on a consumer grade ADSL modem. Some care is needed in selection of suitable hardware for this but as I had seen some reports of successful installation of a custom build of OpenWRT on the DLink DSL-G604T and these seemed to be cheaply available on eBay I decided to try one. Having shown that it met my requirements I was later able to pick up a job lot (without antennas or PSUs) even more cheaply for use as spares and for possible further experimentation. I’ve now been using my original purchase for over a year and it has proven to be stable and reliable with good synchronisation speed.