Make parent category an optgroup

You will need to extend the Walker_CategoryDropdown walker. A very, very simple version of that is this:

class Top_level_Optgroup extends Walker_CategoryDropdown {

  var $optgroup = false;

  function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0 ) {

    $pad = str_repeat(' ', $depth * 3);

    $cat_name = apply_filters('list_cats', $category->name, $category);
    if (0 == $depth) {
//    $this->optgroup = true;
      $output .= "<optgroup class=\"level-$depth\" label=\"".$cat_name."\" >";
    } else {
      $output .= "<option class=\"level-$depth\" value=\"".$category->term_id."\"";
      if ( $category->term_id == $args['selected'] )
              $output .= ' selected="selected"';
      $output .= '>';
      $output .= $pad.$cat_name;
      if ( $args['show_count'] )
              $output .= '&nbsp;&nbsp;('. $category->count .')';
      $output .= "</option>";
    }

  }

  function end_el(&$output,$object,$depth) {
    if (0 == $depth/* && true == $this->optgroup*/) {
      $output .= '</optgroup>';
    }
  }
}

// usage test
wp_dropdown_categories(
  array(
    'orderby' => 'name',
    'hide_empty' => 0,
    'show_count' => 1,
    'show_option_none' => 'Select one',
    'class' => 'cat',
    'hierarchical' => 1,
    'name' => 'cat',
    'walker' => new Top_level_Optgroup
  )
);

That assumes that the the topmost– depth === 0— category is an optgroup. That is very simple logic, but seems to match your example. This walker does not look for nor does it care about the presence or absence of category children and probably won’t work correctly if your actual category structure is more complicated than that in your example.