Устраняются через объект history.
Кстати, очень хорошая демонстрация использования AJAX с нормально работающей (с точки зрения простого пользователя) кнопкой "Назад" имеется в YUI.
Об этои уже писали и много это обсуждали. Не раз.
Использование символа # для отделения адреса скрипта от параметров - не лучшая идея. У него другое назначение.
Понятно что идея не лучшая и использовать ее имеет смысл далеко не всегда. Но всетаки существуют случаи, когда это очень удобно.
А обсуждений я, к сожалению, не видел.
Задача реализуема, но несколько большим геммороем. Если в двух словах, то для IE создается iframe, куда грузится та же страница, но с параметром, который вместо выполнения всей страницы выводит маленький html+js (иначе засунуть страницу в хистори, насколько я знаю, нельзя). После этого, при нажатии Back, откат по хистори произойдет именно в iframe. При загрузке документа в iframe`е проверяем, соответствует ли его url адресной строке браузера и, если нет, редиректим.
Если интересно, распишу подробнее с примерами.
PS Посмотреть в работе можно на evraz.com
(переходы между всеми внутренними страницами)
Изменение адресной строки из javascript