Yes, you should be able to make all these places in three weeks.
Buy your domestic tickets as you go. I suggest you fly to Iguassu as it's over 24 hours by bus, and there is little else to see in this area. Do a one, or better still, a two-day visit so you can do the Brazilian side as Kathryn suggests.
Argentina is awfully big. The bus from BA to Bariloche is also 24 hours, so you will probably end up flying to Bariloche and El Calafate. In my experience, fares tend to be cheaper when purchased in local currency (or credit card) within the country, but that could change.
I do suggest a visit to Mendoza. We did it on an overnight bus, supremely comfortable, spent two days and loved it. You might look into a bus service from
Mendoza to Bariloche. It takes about 17 hours, but the buses are really comfortable, and its a pretty spectacular trip along the foothills of the Andes.
Do try to spend at least one night in an estancia on the Pampas. We stayed at one near
San Antonio de Areco, and lovely little cowboy town just a few hours out of BA.
.