Preheat oven to 350°F (175°C). Grease and flour three 9-inch round cake pans or line with parchment paper.
Sift flour, baking soda, and salt in a medium bowl. In a large bowl, cream butter, shortening, and sugar until fluffy.
Beat in egg yolks one at a time, then stir in vanilla.
Alternately mix dry ingredients and buttermilk into the creamed mixture, starting and ending with dry ingredients. Fold in coconut and pecans.
In a separate bowl, beat egg whites to stiff peaks. Gently fold them into the batter. Divide the batter evenly among prepared pans.
Bake 25-30 minutes or until a toothpick comes out clean. Cool in pans for 10 minutes, then transfer to a rack to cool completely.
Beat cream cheese and butter until smooth. Gradually add powdered sugar and vanilla.
Frost and layer cakes. Sprinkle with pecans and toasted coconut if desired.
Refrigerate for 1 hour before serving.