How to programmatically add options to list_text field
Your available widgets for a list field are these: options_select, options_buttons and options_onoff, not list_text, that is the field type. 

The widget values can be found on list_field_widget_info_alter(), where the list types are coupled with the widgets.

So I suppose you should update your field instance to use:

'widget' =&gt; array(
  'type' =&gt; 'options_select', // Drop down button or multi-select
  // OR 
  // 'type' =&gt; 'options_buttons', // Radio buttons or checkboxes.
);


The way the widget is rendered depends on the cardinality defined on your field. If cardinality is set to 1, the first type will be used (drop down or radio buttons), if cardinality > 1, you'll get a multi-select field or checkboxes.

Assuming this field can only hold one value, you should also add

'cardinality' =&gt; 1,


To your field definition.

Leaving you with:

// Create Field
$field = array(
  'suffix' =&gt; array(
    'field_name' =&gt; 'suffix',
    'type' =&gt; 'list_text',
    'cardinality' =&gt; 1,
  ),
);
field_create_field($field);


//Create instance
$instance = array(
  'suffix' =&gt; array(
    'field_name' =&gt; 'suffix',
    'entity_type' =&gt; 'user',
    'label' =&gt; 'Suffix',
    'bundle' =&gt; 'user',
    'options' =&gt; array(
     '0' =&gt; 'Mr.',
     '1' =&gt; 'Mrs.',
    ),
    'widget' =&gt; array(
      'type' =&gt; 'options_select',
    ),
  ),
);
field_create_instance($instance);