How do I get the title of a category in a custom loop?

Since you already have the category ID (you use it in your call to WP_Query::query()), you can just use that to request the category name. get_cat_name( $cat_id ) will do exactly that. It uses get_category( $cat_id ) in the background, which returns the full category object, which can be useful if you want to show more information about the category.