Never actually tried any of this, but the shell is just an executable, so you should be able to just change the shell of your user to your application. (Using something like chsh [I]username[/I]). As soon as the user is logged in, it should instantly drop them in your program. I'm not sure what happens when the program exits though; Something for you to test out...
If you want to provide a menu of options, including a 'real' shell, print out your list of choices; If they choose shell, just execute /bin/sh, or whatever shell you want. When that executable finishes and returns to your program, loop back to displaying your menu.
For autologin, you may be able to mess with /etc/ttys & /etc/gettytab. I think ttyv0 is the main terminal you get on a normal boot. It's set to use the Pc gettytab entry. If you look in the gettytab file, there are some examples for 'autologin'. These are set for root although you can probably change that (or create your own autologin entry with a different name and set the terminal to use that). I have no idea if any of that will work but it stands a chance.