Preheat oven to 350 F. Grease or use parchment paper to line a 9x9-inch baking pan.
In a large saucepan, melt butter.
Turn heat to low, and stir in sugar. Let cook, stirring constantly, for 2-3 minutes.
Remove from heat, and stir in vanilla.
Let mixture cool for about 5 minutes.
Whisk in eggs until combined.
Add flour, cocoa powder, and salt. Whisk in until just incorporated.
Pour batter into prepared pan, spreading batter as needed.
Bake for 20-30 minutes. The edges should look done, but the center should still look shiny. A toothpick inserted in the center should come out with a few fudgy crumbs.
Cool brownies completely in the pan.
To make the mousse, heat marshmallows, chocolate, and milk in a medium saucepan over low heat, stirring constantly until completely melted and smooth.
Cool completely. It's important that this mixture is completely cool. Otherwise you will end up with liquid mousse.
In a separate bowl, beat whipping cream to stiff peaks.
Fold in cooled chocolate mixture.
Spread mousse evenly over brownies.
Cover, and chill brownies for at least 30 minutes.
To make the whipped cream, beat cream and sugar together until stiff peaks form.
Spoon whipped cream over the chocolate layer.**
Brownies can be served at this point, or you can chill them for cleaner cut lines.
Cover, and chill leftover brownies.
*I've used Dutch-processed and regular unsweetened cocoa powder. Either one will work.** In order to avoid pulling up the mousse, I pile the whipped cream in the middle, and then gently spread out to the corners. ***Prep time doesn't include cooling or chilling times. ****Nutrition values are estimates.