WebBrowser1.ExecWB(4, 0); 
Это ты просто вызываешь команду IE на сохранение страницы, естественно, при этом выскакивает диалог выбора каталога.
Простого варианта, имхо нет. Ручками, используя объектную модель IE парсить страницу и по полученным линкам загружать и сохранять картинки. Примерно так:
//загрузка имиджа по линку в поток
function LoadImage(src:string; str:TMemoryStream):boolean;
var
  istr: IStream;
  statstg: TStatStg;
  buf: string;
  pos: Int64;
  cb: Integer;
begin
 Result := False;
 try
  istr := TStreamAdapter.Create(str, soReference) as IStream;
  If URLOpenBlockingStream(nil, PChar(src), istr, 0, nil)<>S_OK then
  exit;
  istr.Stat(statstg, 0);
  If statstg.cbSize = 0 then
  exit;
  SetLength(buf, statstg.cbSize);
  istr.Seek(0, 0, pos);
  istr.Read(@buf[1], statstg.cbSize, @cb);
  str.Position:=0;
  str.Write(buf[1], statstg.cbSize);
  str.Position:=0;
 except
  exit;
 end;
 Result := True;
end;
//парсим все имеджи страницы
procedure ParsImages;
var
  doc: IHTMLDocument2;
  allEl: IHTMLElementCollection;
  img: IHTMLElement;
  i: Integer;
  srcImg: string;
  str: TMemoryStream;
begin
 doc := WebBrowser1.Document as IHTMLDocument2;
 If doc = nil then
 exit;
 allEl := doc.all;
 If allEl = nil then
 exit;
 allEl := allEl.tags('img') as IHTMLElementCollection;
 For i:=0 to allEl.length-1 do
 begin
  img:=allEl.item(i, i) as IHTMLElement;
  If img=nil then
  continue;
  srcImg := string(img.getAttribute('src', 0));//получили линк на картинку
  //код загрузки по линку и сохранения картинки
  str := TMemoryStream.Create;
  try
   If LoadImage(srcImg, str) then
   str.SaveToFile('MyFile.gif');
  finally
   str.Free;
  end;
 end;
З.Ы. Необходимо добавить юниты mshtml и ActiveX