When I read your post I became curious and looked at the entity
navigator: http://crm/sdk/mdbrowser/entity.aspx?entity=contact (where
crm is our specific crm installation).
The complete list can be accessed at http://<myserver>/sdk/list.aspx
There you can see all the attributes and relationships of the contact
entity. The last 3 columns specify whether an attribute is valid for
create/read/update. When a attribute is not valid for create you can
assume (I think) it is derived.
This data is retrieved from the metadata service:
you can use this service to get an up-to-date definition of the
attributes of your crm system.
Hope this helps to get you on your way.