Marinate the chicken pieces in yogurt, salt, and spices for at least 30 minutes.
In a large pan, melt butter over medium heat.
Add chopped onions and sauté until golden brown.
Stir in minced garlic and grated ginger; cook for 2 minutes.
Add the marinated chicken pieces and cook until browned.
Pour in crushed tomatoes and bring to a simmer.
Reduce heat and stir in heavy cream.
Add garam masala, cumin, and paprika; mix well.
Simmer for 20 minutes, allowing flavors to meld.
Season with salt and pepper to taste, and garnish with cilantro.