andarcio; como te comentó ixMike lo que intentas cambiando el PixelFormat a 8 no te dara resultado por lo ya expuesto. Como tambien comentaba ixMike, para hacer una escala de grises debes "igualar" cada color del RGB, algo como:
Código Delphi
[-]...
Color := Pixel[y,x];
Gray := (GetRValue(Color) + GetGValue(Color) + GetBValue(Color)) div 3;
Pixel[y,x] := RGB(Gray, Gray, Gray);
...
Te dejo el
Truco 433, independientemente de la conversión de formatos y el redimencionamiento es exactamente lo que necesitas.
Saludos