I suppose there isn't really a recommended "file size" per-say.
More a recommended length of time for your entire page to load, including all css, images, javascript, rendering time etc. Too long and people are going to loose interest, but it really depends on your content i.e. if it's very specific content that people are after, then they will wait for longer, but if your running an e-commerce site and your competition is only a click away, then page-load times are very important.
I suppose the answer is make your files as small as possible and your site load as fast as possible. But this is going to be a classic return on investment question, if your running an e-commerce site, a faster loading site could lead to more sales?
But to try and answer your question, 400KB seems a little heavy to me. As a general rule of thumb, you want to aim for sub 10 second for a sub 2 second load time of the page beginning to be visible - to at least give a response to your user.
Here are Yahoo's Best Practices for Speeding Up Your Web Site
You can also run Y-Slow a firebug add-on, or numerous other speed tests to analyse and give recommendations.
Google's Page Speed site is a more contemporary approach to page speed.