le probleme ne vient pas du echo $i vs echo "$i" (je ne dis pas que ca n'est pas important, je dis que le probleme ne vient pas de la.. :p), il vient du $(ls -t *.jpg), puisqu'il n'y aura aucune de-specialisation dans le resultat du ls, et donc au final on se retrouve avec un decoupage en token shell, plutot qu'en fichier. Le *.jpg, lui, despecialise correctement et rendra une liste de noms de fichier correcte. Si le tri en date n'est pas important, utilise la syntaxe que te propose pjac.
Sinon, voici une solution :
ls -1 -t *.jpg|while read file
do
echo $file
done