Boil 2 cups of water in a saucepan. Add cashew nuts. Cover with lid, and let it soak for 30 mins.
Drain the cashew nuts, and place them in the small bowl of a food processor. Add a little water to grind to a smooth paste. Set aside.
Heat ghee or oil in a large pan over medium-high heat. Add cardamom, cloves, bay leaves and cinnamon. Saute for one minute. Add red onions, and sauté, stirring occasionally, for 2-3 mins or until soft and translucent. Add ginger and garlic. Saute for one minute or until aromatic.
Add coriander, garam masala and chilli powder. Saute, stirring, for a minute. Stir in the nut paste. Add ½ cup water to make a thick sauce. Bring to the boil. Cover with a lid, and simmer for 2-3 minutes.
When the oil separates, stir in mushrooms. Add chopped coriander (cilantro) leaves. Stir in ¼ cup water to make a thick sauce. Bring to the boil. Cover with lid, and simmer for 4-5 minutes. Add coconut milk and cook until heated through.
Garnish with toasted cashew nuts and coriander (cilantro) laves.
Serve with roti, naan or rice.