Heat the milk in a small saucepan until it bubbles, then remove from heat. Stir in the margarine, sugar and salt until melted. Let cool until lukewarm. In a small bowl, dissolve yeast in warm water. Let stand until creamy, about 10 minutes.
Pour milk mixture into a large bowl. Beat in eggs, 200g of the flour, cardamom and yeast mixture. Cover and let stand for 20 to 30 minutes, or until bubbly.
Stir in the remaining flour, 60g at a time, beating well after each addition. When the dough has pulled together, turn it out onto a lightly floured surface and knead until smooth and supple, about 8 minutes.
Lightly oil a large bowl, place the dough in the bowl and turn to coat with oil. Cover with a damp cloth and let rise in a warm place until doubled in volume, about 1 hour.
Deflate the dough and turn it out onto a lightly floured surface. Divide the dough into three equal pieces and then divide each piece into thirds. Roll out with your hands until the pieces are long enough to plait. Plait three pieces together to form a loaf; repeat twice to make three loaves. Place on lightly greased baking trays and let rise for 40 minutes, until nearly doubled. Meanwhile, preheat oven to 180 C / Gas 4.
Bake in preheated oven for 30 minutes, until golden brown. Move to a wire rack to cool completely.
In a small bowl, mix together butter and icing sugar. Stir in vanilla and 2 teaspoons milk to make a spreadable icing. Spread the icing over the cooled loaves.