Preheat oven to 350F/180C degrees. Grease a 9-inch pan (round or square). Set aside.
To make the streusel: In a medium bowl, whisk together flour, granulated sugar, brown sugar, cinnamon and salt. Add the melted butter and mix with a fork until the mixture is uniformly moistened and crumbs form. Set aside.
To make the cake: In a medium bowl sift together flour, baking powder, baking soda and salt. Set aside.
In a mixer bowl fitted with the paddle attachment, beat the butter on medium speed for one minute until creamy. Add sugar and beat on medium speed for about 3 minutes, until light and fluffy. Beat in the eggs, one at a time until combined. Scrape down the sides and bottom of the bowl as necessary. Beat in vanilla extract. On low speed, beat in the flour mixture in 3 additions, alternating it with the sour cream in 2 additions (starting and ending with the flour). Do not overmix.
Scrape half of the batter into the prepared pan and smooth it into an even layer. Sprinkle the streusel mixture evenly over the batter. Scrape the remaining batter on top and smooth it into an even layer. Sprinkle the remaining streusel mixture evenly on top of the cake. Gently press down with your hands so the crumbs will stick to the batter.
Bake the cake for 30-40 minutes, until a toothpick inserted into the center comes out clean. Place the cake in the pan on a wire rack to cool completely.
Store cake at room temperature in an airtight container for up to 3 days or refrigerate for up to 5 days.