Steve,
If you're using OpenSSH server, the most common cause of this is shell output from your .profile, .bashrc or .cshrc. Here is section 2.9 of the OpenSSH faq
http://www.openssh.com/faq.html:
2.9 - sftp/scp fails at connection, but ssh is OK.
sftp and/or scp may fail at connection time if you have shell initialization (.profile, .bashrc, .cshrc, etc) which produces output for non-interactive sessions. This output confuses the sftp/scp client. You can verify if your shell is doing this by executing:
ssh yourhost /usr/bin/true
If the above command produces any output, then you need to modify your shell initialization.
Report back here if you are able to identify the problem.