Preheat oven to 350 degrees F (175 degrees C). Grease and flour three 8 or 9 inch round cake pans.
Blend the cake mix, pudding mix, water, eggs and oil in a large mixing bowl. Beat at medium speed for 4 minutes. Stir in 2 cups of the coconut and the chopped walnuts. Pour the batter into the prepared pans.
Bake at 350 degrees F (175 degrees C) for 35 minutes. Let cakes cool in pans for 15 minutes then remove and finish cooling on rack.
To Make Frosting: Melt the butter or margarine in a skillet. Add the 2 cups flaked coconut and stir constantly over low heat until golden brown. Spread coconut on absorbent paper to cool.
Cream the remaining 2 tablespoons butter or margarine with the cream cheese. Add the milk and confectioners' sugar alternately, beating well. Add the vanilla and stir in 1 3/4 cups of the toasted coconut.
To Assemble Cake: Spread tops of cooled cake layers with some of the frosting. Stack them and then frost the sides of the cake. Sprinkle Cake with the remaining toasted coconut.