show/hide field based on user's attribute how do I show/hide field of the form based on currently logged in user's field?
my users' profiles have start_date_field. 

my form has 5 questions:

day_1_activity -&gt; drop down
day_2_activity -&gt; drop down
day_3_activity -&gt; drop down
day_4_activity -&gt; drop down
day_5_activity -&gt; drop down


Now I would like to do a simple comparison: 

start_date_field of logged in user with current_date. 

if start_date_field = current_date show day_1_activity only.

if start_date_field + 1 = current_date show day_1_activity and day_2_activity only.

...
First you need to hide all questions drop down fields by setting #access to FALSE then show each field according to the condition.

You should use hook_form_alter to alter your entityform form.

function MODULE_NAME_form_MACHINE_NAME_entityform_edit_form_alter(&amp;$form, &amp;$form_state) {
  global $user; // to get the current user uid

  // hide all drop down
  $form['field_day_1_activity']['#access'] = FALSE;
  $form['field_day_2_activity']['#access'] = FALSE;
  $form['field_day_3_activity']['#access'] = FALSE;
  $form['field_day_4_activity']['#access'] = FALSE;
  $form['field_day_5_activity']['#access'] = FALSE;

  // load user
  $account = user_load($user-&gt;uid);

  // get user start_date_field value
  $user_start_date = $account-&gt;field_start_date_field['und'][0]['value'];

  // show question drop down based on the condition.
  switch ($user_start_date) {
    case date('Y-m-d'):
      $form['field_day_1_activity']['#access'] = TRUE;
      break;
    case date('Y-m-d', strtotime('+1 day')):
      $form['field_day_1_activity']['#access'] = TRUE;
      $form['field_day_2_activity']['#access'] = TRUE;
      break;
    case date('Y-m-d', strtotime('+2 day')):
      $form['field_day_1_activity']['#access'] = TRUE;
      $form['field_day_2_activity']['#access'] = TRUE;
      $form['field_day_3_activity']['#access'] = TRUE;
      break;
  }
}