Well, it never hurts to add a multi-vitamin, to help fill the gaps, but I have to agree with Mallory - if your 3 year old is eating hummus and salad, you're doing fairly well. There are *plenty* of kids your age that only eat "white foods." (I remember a very funny account by a woman who was the editor of Gourmet magazine - she would take her son to all kinds of great restaurants with her and he would eat nothing but rice. And he was older than either of yours.)
And you should never underestimate the powers of peanut butter - there's lots of protein and the fats in it are fairly healthy (no cholesterol - low saturated fat.) Peanut butter flavored with cinnamon sugar and thinned out is an excellent dip for apples. Or make a grilled sandwich with cinnamon peanut butter and slices of super-ripe peaces. Heavenly!
Get them in the kitchen with you! Maybe they can help find some kid-friendly recipes, either online or in a kids cookbook. Keep it simple.
My kids like anything that involves dipping. Tortilla chips and cheese dip, good bread dipped in seasoned olive oil and parmesan, carrots and ranch dip, fruit and yogurt dip, etc.
If they like spaghetti, branch out slightly and try different kinds of ravioli, tortellini, or lasagna. Or how about quesadillas? Start off with just cheese, and if they like that, you can *gradually* add a little bit of refried black beans.
If you like ethnic restaurants but they're too wary, start off with low expectations - only put food on their plate that they know and trust (for give them the feeling of safety) , but offer to let them try some of yours (some risk-taking) and always bring along some back-up snacks (for your fallback plan.) You don't want them to view the whole dinner as a negative experience just because they didn't like the new flavors. For instance, I take mine to an Indian restaurant, and I get them a mango lassie (basically a smoothie made with mango and yogurt - that's kind of a no-brainer) and just put the naan (indian bread) and rice on their plates. If they aren't *forced* to try something new, they're more likely to do so out of curiousity. (And if they hate everything, I'll usually have a Larabar or something in my purse so they don't starve.)
If it makes you feel better, there's a very good biological reason for "picky eaters." For most of human history, 3-6 year-old children would begin to start wandering a little ways from their mothers. If they continued to "put everything in their mouth", like babies do, sooner or later they would eat something poisonous or dangerous. Instead, at this stage, children have a very strong biological drive to only eat things that are VERY familiar - it's how humans made it this far. :)