This afternoon I was at the Microsoft Dynamics CRM booth at Convergence when someone asked me about required fields in CRM 2011. They wanted to know how to make fields required, but have different forms with different required fields for the same entity.
First, in CRM 2011, when you make a field required by editing the field, you are making it required for all forms.

If you want to make a field required just for a particular form, you can use a form onload event to change the requirement level. One of the great things about CRM 2011 is just how much is exposed to JScript through Xrm.Page. There are methods on the attribute to get the required level and set the required level. Let’s suppose for example that we want to make the First Name required, but only on this form, then we could use the following onload function with the parameters ‘required’, ‘firstname’ to make the field required. If we needed to add multiple fields, then we would just specify them after ‘firstname’, such as ‘required’,'firstname’,'address1_city’.
function updateRequirementLevel()
{
var level = arguments[0];
for (var i=1; i < arguments.length; i++)
{
var attribute = Xrm.Page.data.entity.attributes.get(arguments[i]);
attribute.setRequiredLevel(level);
}
}
That will make each field you specify after the level, required or recommended based on the level you pass as the first parameter. Calling the function updateRequirementLevel('required','firstname'); will make the firstname required.