Why are 2x4 bricks hard to get in certain colors?
Prices of bricks are determined by supply and demand, in your specific case, it is the supply side to blame. Check this site which shows how many sets was a particular colour of 2x4 brick contained in, and you'll see that there is no mention of the Dark Brown colour you are after. This means all such bricks for sale come from other sources than opened official LEGO sets that were parted out and sold by pieces, like designer bricks, not officially released sets and the like.
Brown bricks were found in 27 sets, but if you compare that number with the 650 sets for yellow ones, you'll see how it causes the difference in their prices (12 cents vs 53 for new ones sold in average in the last 6 months).
You haven't mentioned a concrete shade of green, but the numbers are similar in that area as well, except for the regular green: Olive Green (3), Dark Green (50), Green (309), Sand Green (18).
The rarity of these shades are best explained by the official LEGO policy of refusing to produce sets depicting realistic military equipment from the contemporary era: see for more here.