I've explored another approach to this which uses the object model to set the ReadOnlyField property (see: http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfield.readonlyfield.aspx).

    SPList list = web.Lists["Your list name"];
    SPField guideline = list.Fields["Guideline"];
    guideline.ReadOnlyField = true;
    guideline.Update();  

Once this has been done to a field, it will no longer show up the new item and edit item forms. The drawback here is when you add new item to the list and you want to set the initial value for the read-only column. You would need to change the value of the ReadOnlyField property back to false, add the item, then set the ReadOnlyField property back to true. The same process would be needed if changing the value of the read-only field. Furthermore, I tested to see what happens when you try to change the value through code with this property set to true. It does not generate any exceptions or errors, it simply discards the new value.