You are probably generating output in your .bashrc or .tcshrc/.cshrc file. Scp becomes confused by any terminal output.
The solution is to remove all output from non-interactive login scripts. man bash (or tcsh if you've changed your shell) for details on the necessary changes.