eek.. I think what you want to look into is a combination of jQuery and ajax. jQuery has all the capabilities on the browser end you need, including a way to update the history and append hashbangs to urls so users can still use the back button with their browser. Instead of an xmlhttprequest call directly you're better off using a mature library like jquery.
Maybe start with looking at something like this: http://iviewsource.com/codingtutorials/learning-how-to-use-jquery-ajax-with-php-video-tutorial/
An ajax example on our site is when you click "Top Members" and start typing a username.. no page reloads to generate the content on the members page.