Preheat oven to 350°F (175°C). Grease and flour two 9-inch round cake pans.
In a large bowl, mix granulated sugar, vegetable oil, melted butter, eggs, egg whites, and sour cream until smooth.
Sift flour, baking powder, baking soda, and salt into the wet ingredients. Mix well.
Add coconut extract, vanilla extract, and coconut milk. Stir until combined.
Divide batter evenly between the pans. Bake for 25-30 minutes or until a toothpick comes out clean.
Let cakes cool completely.
For the filling, heat 1 cup of heavy cream in a saucepan. Mix cornstarch with remaining cream and add to the saucepan.
Add butter, sugar, shredded coconut, and vanilla extract. Cook until thickened. Let cool.
For the icing, beat softened butter and cream cheese until smooth. Add vanilla and powdered sugar. Mix well.
Assemble the cake by spreading filling between layers. Frost the top and sides with icing.
Sprinkle toasted coconut over the top of the cake.