How are you determining the user's role? Do you have a way of querying active directory, are you querying a SharePoint list that contains a list of users and roles?
I think that's the tricky part. The rest is easy, since InfoPath provides a way to add Formatting logic, so you can disable a field if a certain condition is satisfied.