store fid of file_load into profile2
I think you are asking how to save user picture. Users table holds the place for picture.

$account = user_load($new_user-&gt;uid);
user_save($account, array('picture' =&gt; $fid));


EDIT

Profile2 module is based on entities using Entity API module. You can use entity_metadata_wrapper('profile2', $profile-&gt;pid) to get a metadata object. This object will hold the properties (native profile2 fields) and Fields (additional properties plugged in via field api or Field Admin UI)

$profile = profile2_load_by_user($account, 'main');
$profile_w = entity_metadata_wrapper('profile2', $profile-&gt;pid);
$proflie_w-&gt;field_myfield-&gt;value(); // This is a read operation
$proflie_w-&gt;field_myfield-&gt;set('new value'); // This is write operation
$proflie_w-&gt;save(); // Finaly save the things


You can bypass metadata wrapper.

$profile = profile2_load_by_user($account, 'main'); // Loading existing profile instance
OR
$profile = profile2_create(array('user' =&gt; $account, 'type' =&gt; 'main')); // Providing a new profile instance
$profile-&gt;field_myfield = "new value";
$profile-&gt;save();


NOTE: you can check all your listed properties using foreach operation on the wrapper object.
e.g.

$profile_w = entity_metadata_wrapper('profile2', $profile-&gt;pid);
foreach($profile_w as $key =&gt; $obj){
   debug($key) // give you name of your property