If using frozen spinach, thaw throughly and drain well in a collander.
Pat the chicken dry and salt well. Set aside.
Warm oil in a large saucepan over medium heat.
Add the cumin, cardamom, cloves, and cinnamon.
After the spices puff up and darken (in a second or so), add the ginger and garlic. Cook for 1 mimute.
Add the onions and saute until lightly browned, about 8 minutes.
Add the coriander, turmeric, salt, and cayenne. Cook for 1 minutes, stirring constantly.
Gradually add the yoghurt, stirring constantly. Cook for 2 minutes.
Add the spinach. Mix well and cook for 2 minutes. (If using fresh spinach, cook till it has wilted.)
If you want to check to see if it needs more salt, taste now before adding chicken.
Add the chicken and stir to mix.
Cover the pan, reduce heat to low and cook for 40 minutes, stirring occasionally.
Uncover, increase the heat to medium-high, and boil off most of the liquid.
Mix in the garam masala and serve.
It will taste even better the next day.