Potresti usare history.js. È un wrapper alla history api di html5 che implementa una fallback per browser che non supportano l'API. Fai una push state quando vuoi creare un nuovo stato e la magia è fatta.