How quickly does a player have to say "Uno" to avoid drawing extra cards?
She's basically right, but timing matters here. Your correct play is to say "UNO" as you play the card, which can't be interrupted. The player about to go down to one card may not be caught until his second to last card hits the discard pile. After that though, he's fair game! From the rules:


  When you have one card left, you must yell "UNO" (meaning one).
  Failure to do this results in you having to pick two cards from the
  DRAW pile. That is, of course if you get caught by the other players...
  
  A player who forgets to say UNO before his card touches the discard
  pile, but "catches" himself before any other player catches him, is
  safe and is not subject to the penalty. You may not catch a player for
  failure to say UNO until his second to last card touches the DISCARD
  pile. Also, you may not catch a player for failure to say UNO after
  the next player begins his turn. "Beginning a turn is defines as
  either drawing a card from the DRAW pile or drawing a card from your
  hand to play.


Newer rules on Mattel's web site have a FOUR card penalty: