Guys, some existing discussion in several posts regarding the ability to:

  1. Determine custom field visibility on a field by field basis
  2. Set mandatory completion of custom field

Particularly for the visibility aspect of it - others have solved this pretty well with layout templates. Layout templates determine which fields appear and are role related - so this gives a lot of flexibility. 

Case in point - to determine which contacts should be invites to a special product preview, we ask our sales guys to check a special custom field. Based on this field, we use filtered lists and export the records so our marketing team can take care of the invites. Other than for this purpose, the field is useless for the sales guys - so I don't want to keep it in their view. With layout templates, I could remove it from the sales rep view - but display it in my view or not display it at all - without deleting the field itself. 

If you allow for lead, contact, organization, deal and product layout templates, this functionality could extend consistently across all objects. 

(and while you're at it - in combination with layout templates, please consider allowing for custom sections/headers so you can determine the order and organization of fields in these objects a bit more flexibly?)

Just FYI.