Here's what the law says: The Coinage Act of 1965, specifically Section 31 U.S.C. 5103, states: "United States coins and currency (including Federal reserve notes and circulating notes of Federal reserve banks and national banks) are legal tender for all debts, public charges, taxes, and dues. Foreign gold or silver coins are not legal tender for debts."
All this means is that the US Federal Reserve system must honor all US currency. As the US Treasury points out, there's nothing in the law that says that private businesses have to accept it for all transactions. If a merchant wants to sell her products in exchange for gold bullion, nothing but dimes minted before 1946, Swedish fish, or Monopoly money, that's her right under the law.
The absence of such a law is how bus lines can legally refuse to accept your dollar bills, gas station clerks can turn their noses up at your $100s, and panhandlers near the Monitor's newsroom can yell at you after you drop a Sacagawea dollar coin in their cup, even though you were just trying to be nice.