Coarsely crush the cloves and cardamom using a mortar and pestle or a spice mill. Set aside.
Heat the oil in a heavy skillet over moderately high heat. Add the garlic and onion and cook for about 4 minutes, until lightly browned.
Add the cloves/cardamom and cinnamon. Stir and cook for 30 seconds. Add the cumin, cayenne, coriander, ginger, pepper and turmeric. Stir and cook until aromatic, 30 seconds. Add the chicken and sear for 3 to 4 minutes per side, until light brown.
Add the tomato puree, coconut, salt and water. Bring to a gentle boil, reduce heat to medium, cover and cook for about 20 minutes, until the chicken is tender. Sprinkle in the lemon juice. Transfer to a heated serving dish. Remove the cinnamon stick. Garnish with sprigs of cilantro.
Note: If you don't want to grate your own coconut, you can buy frozen grated coconut in Indian and Asian markets.