Try handling CurrentCellValidateString, and set e.Cancel = true if the color is not valid.
private void gridDataBoundGrid1_CurrentCellValidateString(object sender, GridCurrentCellValidateStringEventArgs e)
{
GridCurrentCell cc = this.gridDataBoundGrid1.CurrentCell;
if(this.gridDataBoundGrid1[cc.RowIndex, cc.ColIndex].CellType == "ColorEdit")
{
string s = e.Text;
try
{
Color c = (Color)TypeDescriptor.GetConverter(typeof(Color)).ConvertFromString(s);
}
catch
{
e.Cancel = true;
}
}
}