No se si te estoy entendiendo bien pero no existe el concepto de un objeto de sólo lectura, lo que sí puedes hacer es que algunas propiedades de un objeto sean sólo de lectura (con lo que conseguirías, mas o menos, un objeto no modificable, al menos en sus propiedades). Para ello, has de especificar sólo la parte "read" en la declaración de la propiedad, aunque ten encuenta que las propiedades de tipo objeto siempre se podrán modificar (por eso es mejor, siempre que sea posible, no usar propiedades de tipo objeto si queremos que sean de sólo lectura).
Por ejemplo, si quieres que los campos "Nota" y "Prefijo" de la clase TTipoHabitacion sean sólo de lectura haríamos lo siguiente:
Código Delphi
[-]
type
TTipoHabitacion = class(TCollectionItem)
private
FNota: string;
FPrefijo: string;
public
property Nota: string read FNota; property Prefijo: string read FPrefijo;
end;
Fíjate que si el atributo "Nota" fuera de tipo TStrings, entonces, el usuario si que podría modificar dicho atributo al tratarse de un objeto (es por eso que te comenté antes que no existen los objetos de sólo lectura), pero al ser string el valor no podrá modificarse.
Según veo estás tratando de hacer un framework de persistencia de objetos (lo que no es algo relativamente fácil) así que te aconsejaría buscar por el foro donde encontraras hilos interesantes sobre el tema.
Saludos!