Preheat oven to 350 degrees F. Grease and flour 3 (9-inch) cake pans.
Using an electric mixer, cream butter until fluffy. Add sugar and continue to cream well for 6 to 8 minutes. Add eggs, 1 at a time, beating well after each addition. Add flour and milk alternately to creamed mixture, beginning and ending with flour. Add vanilla and continue to beat until just mixed.
Divide batter equally among prepared pans. Level batter in each pan by holding pan 3 or 4 inches above counter, then dropping it flat onto counter. Do this several times to release air bubbles and assure you of a more level cake. Bake for 25 to 30 minutes or until done. Cool in pans 5 to 10 minutes. Invert cakes onto cooling racks. Cool completely.
While cake is baking, prepare filling. Stir together sugar, sour cream, milk, and coconut in a bowl until well blended.
Remove cake layers from oven and allow cake to remain in pans as you prepare to stack and fill. Remove first layer and invert onto cake plate. Using the wrong end of a wooden spoon, poke holes approximately 1-inch apart until entire cake has been poked. Spread 1/3 of filling mixture on cake layer. Top with second layer, repeat process. Top with last layer and repeat process again. (As I stack layers together I stick them with toothpicks to prevent cake from shifting).
To prepare the frosting, place sugar, cream of tartar or corn syrup, salt, water, and egg whites in the top of a double boiler. Beat with a hand-held electric mixer for 1 minute. Place pan over boiling water, being sure that boiling water does not touch the bottom of the top pan. (If this happens, it could cause your frosting to become grainy). Beat constantly on high speed with electric mixer for 7 minutes. Beat in vanilla. Frost the sides of the cake first, being careful not to get crumbs in the icing. When cake is completely covered, gently cover frosting with coconut.
Cover loosely and refrigerate for three days (if you can stand it that long!).