Você poderia escrever algo como
SELECT product.*, bottom_category.name, top_category.name
FROM product
LEFT JOIN bottom_category ON bottom_category.id = product.bottom_category_id
LEFT JOIN top_category ON top_category.id = bottom_category.top_category_id
ORDER BY top_category.id,bottom_category.id
Mas se você tiver tabelas muito grandes, esqueça a 3ª forma normal e adicione nomes para categorias na tabela de produtos. Mas somente se você tiver tabelas muito grandes com categorias.
UPD Adicionar
ORDER BY