Believe me, it's tough, but I went through the same thing. I was so worried Elizabeth wouldn't eat. We even had to go to the dr for an 20 month weight check. Between 18 months and 20 months is when I started giving her Boost and giving up on trying to force her to eat. She gained 3 lbs in 2 months because she was no longer in control.
First go get Boost for kids. You can get it at Kroger and super target. It contains vitamins and calcium. Give him this with breakfast just to satisfy your need for him to have what he needs in a day. Next remember for anyone the portion of food they need is the size of the palm of their hand. Your little guys hands are very small = small portions. He will survive. I don't know if you have tried nuts or you have a nut concern, but my 22 month old loves cashews and has eaten them since she was 1 year. As long as he has good healthy snacks during the day that he can feed to himself, he is fine.
Other than this, you have to know he is at a point where he is trying to control whatever he can. The more frustrated you get with the situation, the more control he has. Give up on the food thing. Don't give him a bottle at night. If he throws the cup back at you, apparently he doesn't NEED it. You are the adult and you set the parameters for him.
Was your dr concerned with his weight? Give the nurse a call to settle yourself... GL! Every day is a new challenge and you can do this. :)