Preheat your oven to 350°F (175°C) and generously grease a bundt cake pan.
In a medium bowl, whisk together the flour, baking powder, baking soda, and salt. Set aside.
In a large bowl, cream together the softened butter and granulated sugar until light and fluffy. Add the eggs, one at a time, beating well after each addition. Stir in the vanilla extract.
Gradually add the dry ingredients to the butter mixture, alternating with the buttermilk. Begin and end with the dry ingredients, mixing until just combined. Be careful not to overmix.
In a separate bowl, prepare the cinnamon bun filling. Combine the melted butter, brown sugar, and ground cinnamon until well combined.
Pour half of the cake batter into the greased bundt cake pan. Create a well in the center of the cake batter and Spoon the cinnamon bun filling into the well. Top with remaining cake batter.
In a small bowl, prepare the streusel topping. Combine the flour, brown sugar, and ground cinnamon. Pour in the melted butter and mix until the mixture resembles coarse crumbs.
Sprinkle the streusel topping evenly over the cake batter.
Bake in the preheated oven for 40-45 minutes or until a toothpick inserted into the center comes out clean. Remove the cake from the oven and let it cool in the pan for 10 minutes before transferring it to a wire rack to cool completely.
While the cake is cooling, prepare the cream cheese icing. In a medium bowl, beat together the softened cream cheese and butter until smooth and creamy. Gradually add the powdered sugar and vanilla extract, mixing well. If the icing is too thick, add milk, one tablespoon at a time, until desired consistency is reached.
Once the cake has cooled, spread the cream cheese icing over the top. Allow the icing to set before serving.