@roman: Menos código y mejor, perfecto.
@egostar: Te pasaste en tu respuesta :O El código funciona bien, pero si minimizas la ventana lo dibujado se pierde. Así que se me ocurre ir guardando en un array las celdas que tienen imagen y luego en el DrawCell recorrer el array con un for e ir pintando las imágenes. Ahora me pondré con ello, si lo consigo lo posteo por si a alguien le sirve.
Edito: Añado el código que he hecho (basado en el de egostar) para rellenar una celda con una imagen, ahora solo me falta la parte del array y el for:
Código Delphi
[-]
Imagen:TBitmap;
begin
Imagen := TBitmap.Create;
ImageList.GetBitmap(0,Imagen);
l := (Nº_FILA * ANCHO_IMG) + Nº_FILA;
t := (Nº_COLUMNA * ALTO_IMG) + Nº_COLUMNA;
DrawGrid.Canvas.Draw(l,t,Imagen);
Imagen.Free;
end;