Preheat oven to 350°F (175°C). Grease a 9x13 inch baking pan and line with parchment paper, leaving an overhang on two sides.
Combine flour, brown sugar, and cinnamon for streusel. Cut in cold butter until mixture resembles coarse crumbs the size of small peas. Refrigerate while preparing the batter.
If using fresh peaches, peel by blanching in boiling water for 30-60 seconds, then transfer to ice water. Slip skins off and slice into 1/4-inch wedges. Toss peach slices with granulated sugar and cinnamon.
Whisk together flour, baking powder, baking soda, and salt in a medium bowl. Set aside.
Beat softened butter and granulated sugar with electric mixer on medium speed for 3-4 minutes until light and fluffy. Add eggs one at a time, beating after each, then mix in vanilla.
Reduce mixer speed to low. Add flour mixture in thirds, alternating with sour cream, beginning and ending with flour. Mix until just combined, scraping down the bowl as needed.
Spoon two-thirds of the batter into the prepared pan and spread evenly. Arrange cinnamon-sugar peach slices in a single layer over the batter. Drop remaining batter by spoonfuls over the peaches and spread gently.
Sprinkle chilled streusel evenly over the top of the batter. Bake for 45-55 minutes, until the streusel is golden brown and a toothpick inserted in the center comes out with moist crumbs.
Cool in the pan for 20-30 minutes. For the glaze, whisk together powdered sugar, milk, and vanilla until smooth. Drizzle over cooled cake and let set for 5-10 minutes before slicing.