Create a Custom menu item fetched by Product Categories and Sub Categories

You could use the wp_get_nav_menu_items filter

add_filter('wp_get_nav_menu_items', 'prefix_add_categories_to_menu', 10, 3);

Then you could do something like this:

function prefix_add_categories_to_menu($items, $menu, $args) {
    // Make sure we only run the code on the applicable menu
    if($menu->slug !== 'replace_this' || is_admin()) return $items;

    // Get all the product categories
    $categories = get_categories(array(
        'taxonomy' => 'product_cat',
        'orderby' => 'name',
        'show_count' => 0,
        'pad_counts' => 0,
        'hierarchical' => 1,
        'hide_empty' => 1,
        'depth' => $depth,
        'title_li' => '',
        'echo' => 0 
    ));

    $menu_items = array();
    // Create menu items
    foreach($categories as $category) {
        $new_item = (object)array(
            'ID' => intval($category->term_id),
            'db_id' => intval($category->term_id),
            'menu_item_parent' => intval($category->category_parent),
            'post_type' => "nav_menu_item",
            'object_id' => intval($category->term_id),
            'object' => "product_cat",
            'type' => "taxonomy",
            'type_label' => __("Product Category", "textdomain"),
            'title' => $category->name,
            'url' => get_term_link($category),
            'classes' => array()
        );
        array_push($menu_items, $new_item);
    }
    $menu_order = 0;
    // Set the order property
    foreach ($menu_items as &$menu_item) {
        $menu_order++;
        $menu_item->menu_order = $menu_order;
    }
    unset($menu_item);

    return $menu_items;
}

You would create a menu in WordPress and then set the slug in the top of the function to make sure this only runs on the applicable menu. Then this function will replace any items in that menu with all of your product categories.

If you have a huge amount of categories i suggest caching this menu by using a transient, so that it only gets regenerated once a day for example.