Hello,
the "break" is inside the inner loop, so it breaks the "X" loop, while the "Y" loop will continue.
You could write (but there are several other options):
var found_flag:boolean;
found_flag := false;
for Y := 0 to Image.Height-1 do
begin
  for X := 0 to Image.Width-1 do 
  begin
    if Image.Pixels_ie1g[X,Y] <> true then
    begin
      found_flag :=  true;
      break;
     end;
   end;
   if found_flag then
     break;
end;