Q:

How to dequeue styles from a different file than the theme's functions.php?

The WP standard CSS dequeue code below works if contained in the theme's functions.php. But if contained in another file instead, say my_theme/some_folder/some_template_file.php then it doesn't work (that is, stylesheet doesn't get dequeued any more). Why? Is there any workaround other than including the code in my_theme/functions.php (which for off-topic reasons I can't do)?
add_action('wp_print_styles', 'dequeue_iw_theme_styles', 100);
function dequeue_iw_theme_styles() {
  wp_dequeue_style('iw');
}

Just in case, the stylesheet in question is called from my_theme/functions.php this way:
wp_enqueue_style('iw', get_template_directory_uri() . '/css/iw.css', array(), filemtime( get_stylesheet_directory() . '/css/iw.css'));

A:

I don't really know if there exists some other way than creating a plugin or writing a child theme for that. 
Writing a plugin would not be ideal for such a small, theme-specific task; but you can always write a child-theme to override specific things in your theme.
In child theme's functions.php, you can add the code for de-registering or de-queue-ing the scripts you want. This way, you would avoid touching the original functions.php of your theme, and it is actually the best practice to add customization to WordPress themes.
References

https://codex.wordpress.org/Child_Themes
https://developer.wordpress.org/themes/advanced-topics/child-themes/#3-enqueue-stylesheet

Hope it was helpful. Cheers!

