I recently came across history.js https://github.com/balupton/History.js/ which will use pushState where supported and falls back to hashbangs otherwise. It was overkill for my project, (we were already relying on several other advanced html5 features so most users should have pushState) but it certainly seems useful.