In a large mixing bowl, combine 2 cups of flour, granulated sugar, yeast, and salt. Mix well.
In a small saucepan, heat the milk and ½ cup of melted butter until warm to the touch (not boiling). Remove from heat.
Add the warm milk mixture to the dry ingredients, then add the eggs. Mix until combined.
Gradually add the remaining flour, one cup at a time, until a soft dough forms.
Knead the dough on a floured surface for about 5 minutes until smooth and elastic.
Place the dough in a lightly greased bowl, cover with plastic wrap or a clean towel, and let it rise in a warm place for about 1 hour, or until doubled in size.
After the dough has risen, punch it down and roll it out on a floured surface into a large rectangle (about 16x24 inches).
Spread the softened butter over the dough, then sprinkle the brown sugar and cinnamon evenly on top.
Starting from one long side, roll the dough tightly into a log. Cut into 12 equal pieces.
Place the rolls in a greased 9x13 inch baking dish. Cover and let rise for an additional 30 minutes.
Preheat the oven to 375°F (190°C). Bake the rolls for 25 minutes or until golden brown.
While the rolls are baking, prepare the frosting by beating the cream cheese and powdered sugar together until smooth. Add the vanilla extract and milk to reach desired consistency.
Once the rolls are out of the oven, allow them to cool slightly. Drizzle the cream cheese frosting over the warm cinnamon rolls.