There’s a bug in the file /etc/grub.d/00_header which means the timeout’s set to -1 for some reason instead of a positive number. This means that it doesn’t ever timeout.
I’m sure there’s a valid reason why update-grub is doing this to us, but .. meh. An easy fix is to find the following code in the aforementioned file:
make_timeout ()
{
cat « EOF
if [ “${recordfail}” = 1 ]; then
set timeout=-1
else
set timeout=${2}
fi
EOF
}
And change the emboldened line to read “set timeout=1” (no negative sign, or quotes) and run update-grub. Upon reboot you should be good to go!
There’s mention of it being fixed, and a fix being available for newer releases here on the bug #872244 at launchpad, but if you just want it to work, do the above edit!