Apparently, in my specific case today, this error message actually meant the equivalent of a runtime type mismatch.
In the context of a list event receiver, I was attempting to update one of the list item’s properties. AfterProperties is an SPItemEventDataCollection, which seems to really be a collection of strings. In trying to cram a Guid in there, I forgot to call ToString () or Convert.ToString (); the compiler didn’t complain but at runtime my friendly Guid was jailed in the bowels of SharePoint’s exception handlers. SharePoint simply returned
Invalid data has been used to update the list item. The field you are trying to update may be read only.
with nothing but a menacing smile on its horrible, scarred face.