I, too, have a "picky" eater. However, he has sensory issues that are the underlying problem, along with food allergies (anaphylactic to dairy, egg, peanuts, and tree nuts) and intolerances. So, like the 2nd or 3rd poster, we have found help from a SLP who is trained through SOS Feeding Solutions and had tremendous success. His palate is now broadening rather than shrinking. A common misconception is that children will not starve themselves, but if they have underlying issues that are not addressed, they actually will starve themselves. Food is not a priority for the body. It is an instinct to eat for only the first 6 months of life, then it is a learned behavior and choice. No longer an instinct.
Your son has foods that you can make a diet out of. That is excellent! You can continue broadening his food choices and cook things for yourself by creating a "learning plate". This is an empty plate on the table. He has to serve himself a little bit of everything, but if he is not ready to eat the food, he can put it on his learning plate. If his visual system is too overwhelmed with the food and he can't serve himself the food, don't argue about it, just make a statement, "Your body isn't ready for this food. I'll put some on your learning plate" You can test the waters looking at his reactions; sometimes my son can help me (his hand on top of mine on the spoon) to serve the offensive food onto the learning plate. Then, he and you can eat for 10 minutes, and then you can start talking about the food on the learning plate. Start with basic senses: color, texture, hard, soft, rough, smooth, big smell, medium smell, small smell, shape, size, does it have a skin, is it the same inside as outside when you cut into it?, etc. If he interacts with it enough, you could ask if he wants to "snake taste" the food - stick his tongue out for a very short quick taste. Let him decide how far he is willing to go on all of this. You have to be engaged, playing with and learning about the food with him. Get some fun "tools" for him to learn about food with: a masher, a cutter, a dicer, an ice cream or melon ball scoop, things that are different and fun.
You should always serve at least one food he needs to learn about at one meal of the day. It is difficult to start with, but gets easier as time goes on. The learning plate is so helpful and routine now that I can actually serve something new at every meal without my son getting freaked out and power struggling with, because he just says, "oh, yeah, that's just going on my learning plate." Then we learn about it together, with me making connections, oh, this has rice and brocolli and cheese: all foods that I like, but they are cooked together (your rice casserole). I wonder if I tasted the foods separately if I would like them as much as I normally do? Separate them and learn about the differences and similarities to the foods as he is used to eating them.
If you email me, I can send you some articles we have received that have been helpful. Anyways, there is a middle ground - you should not force, but you can encourage learning.