Al hacer el bucle, tambien coge la última fila que acabas de añadir en blanco, y al intentar pasar esa celda vacía a Float, es cuando obtienes el error.
Código Delphi
[-]
FrmVentas.SGListaProductos.RowCount := FrmVentas.SGListaProductos.RowCount+1;
SubTotal := 0;
For i:=1 to FrmVentas.SGListaProductos.RowCount-2 do
añade la línea al StringGrid, pero el bucle, hazlo 1 vez menos (ya que sabes que la última línea siempre estará vacía).
Saludos