mmm... comparto la opinión de casimiro, las soluciones presentadas son como cañonazos.
Por mi parte creo que este problema necesita nada más que una especie de switch, o alternador. Una simple variable booleana que controle el color utilizado.
Código Delphi
[-]procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
const
background_colors: array[0..1] of TColor = (clBtnFace, clWhite);
begin
if Dataset.FieldByName('asiento').Value <> UltimoValor then
BoolSwitch := (not BoolSwitch);
TDBGrid(Sender).Canvas.Brush.Color := background_colors[BoolSwitch];
TDBGrid(Sender).DefaultDrawColumnCell( ... );
UltimoValor := Dataset.FieldByName('asiento').Value;
...
end;
BoolSwitch y UltimoValor son variables privadas del formulario.
Creo que con este código se pudiera solucionar el problema. Sino pues creo que de él se puede partir.
Saludos,
Chris