Drupal 7 - Profiles 2 Module - Share profile data or migration
I think you can use a hook_form_alter() to add visibility conditions on your user_profile_form elements : 

Add these kind of attributes on field you want to hide for free users :

'#states' =&gt; array(
   'visible' =&gt; array(
      ':input[name="field_1"]' =&gt; array(
         array('value' =&gt; 'paid'),
     ),
   ),
),