I would suggest following the guidelines at http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.10. The definition of HTTP 409 includes the following:
1) The request could not be completed due to a conflict with the current state of the resource.
2) The response body SHOULD include enough information for the user to recognize the source of the conflict.
Thus as changes to immutable properties are a problem with the state of the resource, HTTP 409 seems to apply.
As for how to communicate the issue to the client, the guidance seems to be to include details in the response body.
You could also communicate mutability of properties in the representation itself (on the GET). For example.
<MyObject>
<Foo>17</Foo>
<Bar readOnly="true">22</Bar>
....