Peel sweet potatoes. Dice into 1-inch cubes. Add to a large pot of salted water. Bring to a boil over high heat, then lower the heat to a simmer and cook until the potatoes are tender about 15-20 minutes.
Drain sweet potatoes. Using a potato masher, mash well so that there are no big chunks.
Add softened butter, heavy cream, brown sugar, vanilla, and salt. Mix by hand or for a smoother texture, with a hand mixer or electric mixer. Stir until completely combined then mix in eggs until incorporated.
Preheat the oven to 350 degrees. Butter or grease a 9x13 inch baking dish and transfer the sweet potato mixture to the dish.
For the topping, in a medium bowl, combine all topping ingredients: flour, brown sugar, melted butter, oats, salt, and cinnamon. Sprinkle half of the streusel evenly over the casserole.
Bake for 25 minutes at 350 degrees, until set in the middle and golden on top. Top with 2-3 cups of mini marshmallows and bake for another 5-7 minutes, until the marshmallows are lightly brown and puffy.
Serve warm.