Peel and slice the onions and garlic. Melt most of the thick slice of butter in a deep-sided pan, reserving a little. Peel and grate the ginger and add to the pan with the onions and garlic.
Break open the cardamom pods, discard the green shells and lightly crush the black seeds within. A pestle and mortar is good for this but any heavy weight will do. Add the crushed seeds to the pan with the cumin, turmeric, ground cinnamon, cinnamon stick, chilli and the bay leaves.
Cut the mushrooms into large pieces and add to the pan together with the remaining butter (you will find the mushrooms tend to soak it up). Let the mushrooms cook for a couple of minutes, then stir and cover with a lid.
When the mushrooms have softened and darkened a little, add 200ml/7fl oz water. Stir, cover and simmer for 15 minutes.
Meanwhile, wash the spinach carefully. Cook briefly in a separate pan until the leaves have wilted but are still bright, about a minute or two. Remove the spinach and cool under running water to keep the colour bright then squeeze dry and add to the pan with the mushrooms.
Stir in the skinned hazelnuts and the raisins or sultanas. Gently stir in the yoghurt and crème fraîche. Warm through gently and serve, with rice or bread if you wish.
If you toast the hazelnuts briefly in a non-stick pan until golden you will get a more nutty flavour.