You can get the current posts category outside the loop by using the get_the_category function.
http://codex.wordpress.org/Function_Reference/get_the_category
When you have the actual category ( however you got it) you can use get_categories, specifically the ‘child_of’ parameter and pass it the parent cat ID.
http://codex.wordpress.org/Function_Reference/get_categories
Also have a look at wp_list_catagories,
http://codex.wordpress.org/Template_Tags/wp_list_categories#Display_or_Hide_the_List_Heading
where you can do something simple like the following to grab the children.
<?php wp_list_categories('orderby=id&show_count=1&use_desc_for_title=0&child_of=8'); ?>
You would probably do an “if” statement to get the children if they exist and if not just show the category.