Force profile2 field display based on current user's role
Try implementing hook_profile2_view_alter(). Below is a sample code:

/**
 * Implements hook_profile2_view_alter().
 */
function example_profile2_view_alter(&amp;$build) {
  global $user;
  $rid = &lt;advance_user_role_id&gt;;

  if (!array_key_exists($rid, $user-&gt;roles)) {

    $advance_fields = array(); // List of field ID's that should only be displayed
                               // for advance users.

    foreach (element_children($build) as $id) {
      if (in_array($id, $advance_fields)) {
        $build[$id]['#access'] = FALSE;
      }
    }
  }
}