In a bowl, combine yogurt, lemon juice, minced garlic, grated ginger, ground cumin, paprika, turmeric, ground coriander, garam masala, cayenne pepper, salt, and pepper. Add chicken pieces and toss until well coated. Cover and refrigerate for at least 1 hour, or overnight for best results.
In a large skillet, heat vegetable oil over medium-high heat. Add chopped onion and cook until softened, about 5 minutes.
Add marinated chicken pieces to the skillet and cook until browned on all sides, about 5-7 minutes.
Stir in crushed tomatoes and bring to a simmer. Reduce heat to low, cover, and let it cook for 15-20 minutes, stirring occasionally.
Stir in heavy cream and simmer for an additional 10 minutes, until the sauce thickens slightly.
Garnish with chopped cilantro leaves before serving. Serve hot with rice or naan bread.