The original ftp program was the original ftp client, and it is a good investment to learn it. It's the only ftp client that you can be certain is available on most systems (even Win32 comes with the ftp command, albeit an archaic, braindead version of it).
There are many other console-mode (text-only) ftp clients available. The listing here is by no means comprehensive, but includes the most popular ones. Search at FreshMeat to find more.
NcFTP is the all-time favorite ftp client of many Unix users. It comes bundled with most Linux distributions, and offers many advanced features such as tab completion and bookmarks. Version 2 of NcFTP had a curses based full-screen mode. This was done away with in Version 3 (now in beta).
It's not 100% compatible with the commands that standard ftp uses. For example, get and put in NcFTP act like mget and mput do in standard ftp. So if you want to save a remote file as a different local filename, you'd have to do get -z remotename localname. Thankfully, NcFTP has a nice online help system to assist you in learning the commands.
You can get the latest version of NcFTP at http://www.ncftp.com.
A port of the NetBSD FTP client to other systems, lukemftp derives its name from the author of most of the enhanced features, which include: command-line editing, command-line fetches of FTP and HTTP URLs (including via proxies), context-sensitive word completion, dynamic progress bar, IPv6 support, modification time preservation, paging of local and remote files, passive mode support (with fallback to active mode), SOCKS support, TIS FWTK gate-ftp server support, and transfer rate throttling.
I highly recommend lukemftp to users who don't want to change to anything drastically different from the standard ftp client, but want more advanced features.
You can get the latest version of lukemftp at ftp://ftp.netbsd.org/pub/NetBSD/misc/lukemftp/.
lftp is a sophisticated command line based FTP client. Like bash, it has job control. It uses the GNU readline library for input, so you have command line completion and editing. lftp also has bookmarks, mirroring support, and can transfer several files in parellel.
You can get the latest version of lftp at http://ftp.yars.free.net/projects/lftp/.
Debian packages are available at ftp://ftp.freshmeat.net/pub/debs/lftp/.
Comfortable FTP (cftp) is a full screen mode client. What it lacks in features, it makes up for in ease of use. You browse through the directories using the arrow keys and enter.
You should be able to get the latest version of cftp at http://ftp.giga.or.at/pub/nih/cftp/.
Yafc is a very nice ftp client, with features including directory cache, remote filename completion, aliases, colorized ls, recursive get/put/ls/rm, nohup mode transfers, tagging (queueing), multiple connections, proxy support and more. It has support for Kerberos4 authentication.
You can get the latest version of yafc from http://www.stacken.kth.se/~mhe/yafc/.
Debian packages are available at http://members.home.com/decklin/experimental/.
Redhat packages are available at http://lz.freeservers.com/linux/yafc.html.