The problem is that the redirect on the loop redirects input to anything in the loop that reads input, not just what you wanted it to. You need to rephrase this loop so that you don't need to redirect on the loop statement; do a priming read and another read within the loop, say. Or,
#!/bin/bash
[ -f "download.list" ] || exit 1
for line in `cat download.list`; do
URL=${LINE#*,}
TITLE=${LINE%,*}
echo "Download $TITLE [y/n]: "
read RESPONSE
if [ $RESPONSE = 'y' ]; then
echo "curl -O $URL"
fi
done
As usual, my example code is untested; forgive me if it's a brainfart.