Por padrão, h1 é um elemento do bloco e será renderizado na linha após a primeira img e fará com que a segunda img apareça na linha após o bloco.
Para impedir que isso ocorra, você pode definir o h1 para ter um comportamento de fluxo embutido:
#header > h1 { display: inline; }
Quanto ao posicionamento absoluto do img dentro da div , você precisa definir a div que contém para ter um "tamanho conhecido" antes que isso funcione corretamente. Na minha experiência, você também precisa alterar o atributo position do padrão - position: relative funciona para mim:
#header { position: relative; width: 20em; height: 20em; }
#img-for-abs-positioning { position: absolute; top: 0; left: 0; }
Se você conseguir fazer isso funcionar, tente remover progressivamente os atributos de altura, largura e posição do div.header para obter os atributos mínimos necessários para obter o efeito desejado.
ATUALIZAR:
Aqui está um exemplo completo que funciona no Firefox 3:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Example of vertical positioning inside a div</title>
<style type="text/css">
#header > h1 { display: inline; }
#header { border: solid 1px red;
position: relative; }
#img-for-abs-positioning { position: absolute;
bottom: -1em; right: 2em; }
</style>
</head>
<body>
<div id="header">
<img src="#" alt="Image 1" width="40" height="40" />
<h1>Header</h1>
<img src="#" alt="Image 2" width="40" height="40"
id="img-for-abs-positioning" />
</div>
</body>
</html>