Preheat your oven to 350°F (175°C). Grease and flour a 9x5-inch loaf pan, or line it with parchment paper for easy removal.
In a large bowl, whisk together the dry ingredients: flour, cornstarch, baking soda, baking powder, cinnamon, pumpkin spice, and salt. Set aside.
In a separate large bowl, whisk the eggs until they are light and frothy, about 2 minutes. Whisk in the granulated sugar and brown sugar until the mixture is thick and light in color, about 3 minutes.
Add the pumpkin puree, whole milk, sour cream, and vanilla extract. Whisk just until everything is combined. The mixture may look a little clumpy, and that's okay.
Pour the dry ingredients into the wet ingredients. Using a whisk or a spatula, mix just until no streaks of flour remain. Be careful not to overmix; a few small lumps are fine.
For the streusel, in a medium bowl, combine the flour, brown sugar, cinnamon, nutmeg, and salt.
Add the cubed butter to the dry ingredients. Using your fingers or a fork, work the butter into the flour mixture until it resembles coarse crumbs. Set the bowl aside while you prepare the bread batter.
Pour the batter into your prepared loaf pan and spread it evenly. Sprinkle the entire amount of the prepared streusel topping evenly over the top of the batter.
Bake for 70 to 90 minutes, or until a wooden skewer or toothpick inserted into the center of the loaf comes out clean. If the bread is browning too quickly, tent the top of it with a piece of aluminum foil. Ovens vary so I suggest checking the bread at the 70-minute mark. If the toothpick comes out wet, continue to cook in 10-minute increments until the top feels firm, and the toothpick, or tester comes out clean.
Let the bread cool in the pan for about 15 minutes before carefully transferring it to a wire rack to cool completely.
For the icing, mix ingredients and set aside to thicken as the cake cools.
Ice once cooled, and slice.