Custom grouping by taxonomy term in view
Groping things in view not that easy, and what i suggest you here to save your time to use views_field_view which allowed you to insert view inside view.

So simply make 3 displays each one for level and pass the argument between them, that should not take more than 5 min