To make the streusel topping, combine the brown sugar with flour. Cut in the cold butter or use your hands to rub the butter into the mixture until you get a coarse crumb (pea sized crumb). Stir in the pecans and set aside.
Add sweet potatoes to a saucepan, and cover with water. Bring to a boil, simmer uncovered until fork tender (10-15 minutes). Drain, mash the sweet potatoes, and allow to cool for 10 minutes.
Preheat oven to 350°F/180°C.
To the sweet potatoes, add butter, sugar, beaten eggs, milk, vanilla, and salt. Stir until well combined.
Transfer mixture to a 9x13 inch casserole dish or pan.
Spread the streusel topping over the sweet potatoes, and bake uncovered for 30 minutes or until the potatoes start to puff a little and the topping is lightly browned.