For the Cake Batter: Preheat your oven to 350°F. Lightly grease an 8x8 metal baking pan with baking spray or line it with parchment paper.
In the bowl of an electric mixer, cream the softened butter, granulated sugar, and brown sugar together until fluffy. Beat in the eggs one at a time, then mix in the mashed sweet potato and vanilla.
In a separate bowl, whisk together the flour, baking powder, cinnamon, nutmeg, ginger, and salt.
In a medium bowl whisk together the flour, baking powder, salt and spices.
Alternate adding the dry ingredients and the milk to the wet sweet potato mixture, stirring just until combined.
For the Streusel: In a medium bowl, combine the brown sugar, granulated sugar, flour, cinnamon, nutmeg, salt, and vanilla. Cut in the cold, cubed butter using a pastry cutter or your fingers until coarse crumbs form. Stir in the chopped pecans and set aside.
Spread half of the cake batter evenly into the bottom of your prepared pan. Sprinkle half of the pecan streusel over the batter. Carefully layer the remaining batter on top, then finish by sprinkling the rest of the streusel over the entire surface.
Bake for 45 to 50 minutes, or until a toothpick inserted into the center comes out clean. Let the cake cool completely in the pan.
For the Icing: Whisk together the powdered sugar, vanilla, and heavy cream until smooth. Drizzle over the cooled cake, slice, and enjoy!