Preheat oven to 350°F. Grease and flour three 9-inch cake pans.
In a large bowl, cream together butter, shortening, and sugar until light and fluffy.
Add egg yolks one at a time, beating well after each addition.
In a separate bowl, stir together buttermilk and baking soda. Add to the creamed mixture alternately with flour.
Stir in vanilla, coconut, and pecans.
In another bowl, beat egg whites until stiff peaks form, then fold into the batter.
Pour batter evenly into prepared pans and bake for 25–30 minutes or until a toothpick comes out clean.
Cool in pans for 10 minutes, then remove to wire racks to cool completely.
To make the frosting: Beat butter and cream cheese until smooth. Add powdered sugar and vanilla. Stir in pecans.
Frost between layers, top, and sides of cooled cake. Store in refrigerator.