Siccomme a volte capita di dover implementare l'interfaccia System.ComponentModel.ICustomTypeDescriptor e creare un PropertyDescriptor Custom per rendere dinamico il comportamento di proprietà mi sono fatto un esempio da cui partire che rende una proprietà ReadOnly o meno sulla basa del valore di una seconda proprietà.
http://blogs.ugidotnet.org/alexblog/articles/41383.aspx
L'esempio è in VB.NET 2005, ma il codice funziona anche con le versioni precedenti del framework.