Встраивание всего в обычный HTML-файл - это путь. Вы когда-нибудь видели TiddlyWiki ? Я думаю, я видел, что это называется «Одностраничное приложение» - все встроено в один HTML-файл, поэтому он функционирует как (ну, почти) как отдельная часть программного обеспечения. Я не использую это, но я думаю, что это технически довольно внушительно.
Изображения могут быть встроены в кодировку base64 с использованием Data URI. Но поддержка в Internet Explorer 8 не завершена (существует ограничение размера IIRC), и поддержка полностью отсутствует в старых версиях IE. Большинство других современных браузеров имеют хорошую поддержку.
Обратите внимание, что это, как правило, увеличивает размер изображения примерно на треть (поскольку вы «используете» только 6 из каждых 8 битов на байт, поэтому придется использовать еще треть байтов для компенсации этого разрыва).
Например, вы получаете что-то вроде этого:
<img src="data:image/png;base64,<BASE64 STRING>" />
Или это:
.someClass { background-image:url(data:image/png;base64,<BASE64 STRING>"); }
Возможно, вы также захотите прочитать статью Википедии о URI данных, в ней есть комментарии относительно поддержки браузера и некоторые примеры использования.