how to change the widget of view's exposed filter form?
i tested this kind of thing and found that when you try to switch a exposed widget field you need to provide an array with the empty first key, if it is checkboxes or radios; if new widget will be a select then you need to provide an array with the 'All' first key. E.g.:

//Suppose that you have a default input widget which you want to change to select widget.
//We will get the values which we want our new select widget will get as options:
$opts = array(
  'first_key' =&gt; 'First value',
  'sec_key' =&gt; 'Second value',
);

// Then we will add required 'All' first key:
$options = array('All' =&gt; 'Choose a value') + $opts;

// Then we will create our new select widget
$form['YOUR_FIELD_NAME'] = array(
     '#type' =&gt; 'select',
     '#title' =&gt; t('MY TITLE'),
     '#options' =&gt; $options,
   );