Deduciendo de tu título, lo que quieres cambiar es el hash, NO la URL (eso sería otra historia muy diferente).
Los navegadores más modernos (Chrome, Firefox 5, Safari, y creo que Explorer9, aunque no pondría la mano en el fuego por este último, no lo he probado) registran en el historial cada cambio en el #hash, y avisan a la página.
En navegadores más antiguos, los cambios en el #hash son indetectables (hay que comprobarlo continuamente con setInterval) y no se guardan en el historial (hay que un truco con un iframe, y variables para evitar cache)
Luego tu solo tienes que poner el código necesario para que cada vez que cambie, cargar los datos correspondientes, o mostrar las partes correspondientes de la página. También, evidentemente, deberías cambiar los vínculos para que tuvieran esta forma:
Código HTML:
Ver original<a href="#token1">Ir a token1
</a> <a href="#token2">Ir a token2
</a>
.... etc
En resumen, olvídate de implementarlo por tu cuenta porque sería casi imposible hacerlo realmente bien excepto que tengas un público muy concreto, y lánzate a usar la ligera librería jQuery Tools, que ya te lo da todo hecho. Y si, la página está en inglés, pero siempre quedará
http://translate.google.com/ y este foro para las dudas.
http://flowplayer.org/tools/toolbox/history.html