Marinate. In a large mixing bowl, combine the chicken pieces, ginger, garlic, garam masala, turmeric, yogurt, lemon juice, salt, and pepper; mix well, cover, and set aside. You can also let it marinate for 2 hours and up to 2 days in the refrigerator.
Cook the onions and cashews. Heat 2 tablespoons vegetable oil in a large skillet set over medium-low heat. Add the sliced onions to the hot oil; season with salt and cook for 10 to 12 minutes, or until caramelized. Stir often to prevent burning. Stir in the chopped cashews and cook for 1 minute.
Blend. Remove from heat and transfer the onions and nuts to a blender or food processor; add ¼ cup yogurt and process until smooth and combined. Set aside.
Saute. Return the skillet to high heat and add 1 tablespoon vegetable oil. Add the bay leaf and peppercorns, and cook for 1 minute. Stir in the cardamom and cinnamon. Add diced chilis and cook for 1 minute.
Add the rest. Stir in the chicken and cook over medium heat for 5 minutes. Add the prepared onion paste and ½ cup water; season with garam masala, salt, and chili powder.
Cook. Cover and reduce the heat to medium-low and cook for 12 to 15 minutes or until the chicken is cooked through.
Add cream. Stir in the heavy cream and cook for 2 minutes or until heated through. Taste the dish for salt and seasonings and adjust accordingly.
Serve. Remove from heat, garnish with cilantro, and serve with rice.