Its a bit tricky, but you can use plymouth to converse with the user while the system is coming up. This will only work if your job blocks the startup, because once runlevel 2 is reached and plymouth is terminated, you won't be able to interact anymore.
Basically you want to execute 'plymouth ask-question' or 'plymouth watch-keystroke' and the user will be prompted. So if you want to wait 10 seconds for the user, you'd have an upstart job like this (this is quite theoretical and untested!):
start on starting rc RUNLEVEL=
chmod 0750 /tmp/killme.sh
cat > $myscript <<EOF
# script is sent key pressed
cat > /tmp/keypresses.txt
kill -USR1 $$
plymouth display-message --text="you pressed $key"
trap handle_usr1 USR1
plymouth watch-keystroke --command=$myscript --keys="ABCD"
while [ $timeleft -gt 0 ] ; do
plymouth display-message --text="you have $timeleft seconds to press A,B,C, or D..."
plymouth display-message --text="Timed out..."