Heat the olive oil in a large pot over medium-high heat.
Add the onion, garlic and ginger and cook for 4-5 minutes, stirring occasionally.
Add the cumin, coriander, turmeric, garam masala, cayenne pepper, cardamom and cinnamon and cook for 1-2 minutes, stirring constantly.
Add the chicken and cook for 5 minutes, stirring occasionally.
Add the diced tomatoes, coconut milk and chicken broth and bring to a boil.
Reduce the heat to low, cover the pot and simmer for 10-15 minutes, or until the chicken is cooked through.
Stir in the cilantro, salt and pepper.
Serve the curry with steamed white rice.