A users default shell can be changed using the chsh command. It should only accept shells listed in /etc/shells. Remove any shells from /etc/shells that you don't want users accessing.
Not all unix systems enforce the use of shells from /etc/shells by default. It's a configurable option on most systems. You'll have to read up on your flavor of unix to find out how it implements this functionality.
You will also have to remove execute permissions from any shells you don't want users running.
See man shells on Solaris 10; passwd -e changes shell; man vipw to see how to edit passwd file directly. The file /etc/shells is consulted by utilities, but if it does not exist, then a few other places are checked -- again man shells for details ... cheers, drl