Your file is probably missing a newline (\n) on the last line.
You can prove this by printing the residual values of $a etc, like so
while IFS=: read a b c d;
do
echo $a,$b,$c,$d;
done < hello
echo $a,$b,$c,$d
Fix the file.
Also, you should be able to set IFS specifically for the read as shown above. And no need to cat the file either, just use input redirection as shown