Soak basmati rice in water to cover for 30 minutes. Drain.
While rice is soaking, heat oil in large skillet on medium heat. Add onion and salt, and sauté for 10 minutes or until brown and crisp.
Preheat oven to 325°F (160°C).
Bring a large pot of water to boil, add rice and boil for 3 minutes. Drain.
Butter a heavy ovenproof saucepan with a tight-fitting lid. Divide rice in three. Place a layer of rice on base. Scatter over half of mint, coriander and garam masala and half of onions. Repeat layers ending with rice. Pour over lemon juice. Stir together saffron and milk in a bowl. Pour over rice. Cover with a circle of parchment paper and the lid.
Place in oven and steam for 30 to 40 minutes or until rice is tender.