Una cosa sencilla que puedes hacer es utilizar un componente TRichEdit (similar a un TMemo) para rellenar el texto tal como quieres que aparezca.
Una vez que lo tengas basta con que llames al método Print (que posee el Richedit); De esta forma te olvidas de pelear con la impresora.
Algo así:
Código Delphi
[-]
for n:=0 to dbListBox2.Items.Count -1 do begin
richedit.Lines.Add(dbListBox2.Items[n] + ' ' + dblistbox1.Items[n]);
end;
richedit.Lines.Add('Total: ' + lblTotal.Caption);
richedit.Lines.Add('Efectivo: ' + edtEfectivo.Text);
richedit.Print;