In a large bowl, combine the yogurt, lemon juice, cumin, coriander, turmeric, garam masala, salt, and pepper. Add the chicken pieces, ensuring they are well coated. Cover and marinate in the refrigerator for at least 1 hour, or up to overnight for best flavor.
Heat the vegetable oil in a large skillet or Dutch oven over medium heat. Add the chopped onion and sauté until soft and translucent, about 5 minutes.
Stir in the minced garlic and ginger, cooking for an additional 1-2 minutes until fragrant.
Add the marinated chicken (along with the marinade) to the skillet. Cook for about 5-7 minutes, stirring occasionally, until the chicken is browned on all sides.
Pour in the crushed tomatoes and bring the mixture to a simmer. Reduce the heat to low, cover, and let it cook for 15-20 minutes, stirring occasionally.
Stir in the heavy cream and cook for an additional 5 minutes until heated through. Adjust seasoning if necessary.
Serve hot, garnished with fresh cilantro, over steamed rice or with naan bread.