Incorporar tudo em um arquivo HTML normal é o caminho a seguir. Você já viu o TiddlyWiki ? Eu acho que já vi isso ser chamado de "Single Page Application" - tudo está embutido em um arquivo HTML, então ele funciona como (bem, quase) um software independente. Eu não uso, mas acho que é tecnicamente impressionante.
As imagens podem ser incluídas em linha usando a codificação base64 usando um URI de dados. Mas o suporte no Internet Explorer 8 não está completo (há um limite de tamanho IIRC) e o suporte está ausente totalmente em versões mais antigas do IE. A maioria dos outros navegadores modernos tem um bom suporte.
Observe que isso geralmente aumentará o tamanho da imagem em cerca de um terço (porque você só "usa" 6 de cada 8 bits por byte, por isso precisa usar um terço a mais de bytes para acomodar essa lacuna).
Por exemplo, você recebe algo assim:
<img src="data:image/png;base64,<BASE64 STRING>" />
Ou isto:
.someClass
{
background-image:url(data:image/png;base64,<BASE64 STRING>");
}
Você também pode querer ler o artigo da Wikipedia sobre URIs de dados , ele tem comentários sobre o suporte ao navegador e alguns exemplos de uso.