The way to do this is with a Validation Rule, as follows: $ActualEndDate <> NULL && isManuallySet($ActualEndDate) && $PercentCompleted <> 100
There are a number of other considerations. For example:
- You can mark a work item complete using Mark As button.
- You can mark a work item complete by setting Remaining Effort as 0h
- You can mark a work item complete by it's sub items all being completed
Also, Actual End Date will be automatically filled in when the work item is complete, so basically, your PMs will be able to update the Actual End Date only once the work item is complete.