Dice the chicken. Cut the chicken into 1-inch pieces and place it in a bowl.
Marinate the chicken. Add the yogurt, lemon juice, ginger, garlic, red chili powder, garam masala, turmeric, and salt to the bowl. Stir it all together, then cover and refrigerate for an hour (or up to overnight).
Cook the chicken. Heat the oil over medium-high heat in a large saute pan. Place the marinated chicken in the fry pan and cook for 5 to 6 minutes, until the chicken is opaque. Transfer the chicken to a separate bowl.
Make the sauce. Add the onions to the pan and saute for 3 to 4 minutes, until softened and translucent.
Add the ginger, garlic, red chili powder, garam masala, coriander, cumin, and stir for another minute. Then add the cashews, crushed tomatoes, sugar, and water. Stir it all together, reduce the heat to low, and simmer for 5 minutes.
Transfer the sauce to a high-powered blender and blend for a minute, until smooth and creamy.
Combine it all together. Wipe the pan clean with a paper towel (if you'd like to remove any lumps from the final sauce), then stir together the creamy butter sauce, butter, and heavy cream.
Add the chicken back to the pan over medium heat and stir with the sauce for 3 to 5 minutes, until the chicken is warmed through.
To serve. Enjoy the butter chicken on it's own, or serve it over basmati rice topped with fresh cilantro.