This is controlled by the shell variable $PS1
You can set this variable to whatever you want, either temporarily or more permanently with a .login or .profile script depending on what shell you use.
Take a look at the following output for examples:
Last login: Fri Oct 21 21:59:28 on ttys000
Dans-MacBook-Air:~ stuffe$ echo $PS1
\h:\W \u\$
Dans-MacBook-Air:~ stuffe$ PS1="Hello World $"
Hello World $PS1=`date`
Fri 21 Oct 2011 22:03:23 BSTsleep 60
Fri 21 Oct 2011 22:03:24 BSTPS1="`date +%H:%M` $"
22:04 $PS1="\h:\W \u\$"
Dans-MacBook-Air:~ stuffe$
The possibilities are endless. There's something you can do with PS2 also, but I think that only takes effect if you are root - details are hazy, my Unix is a long time ago and based on Solaris, not Mac OS X, but the fundamentals are the same.
Additional info: As suggested in other replies, there are built-in flags like \h and \W etc you can use, but you can also use the output of almost any command too, by using the "back ticks" (funny single quotes used in my date example above). Commands inside back ticks get run and the output substituted, allowing you to include anything, even if there is no built in flag, even for seemingly stupid stuff, whatever you can think of. Want to include the time of the last entry onto an error log file? Use something like:
PS1="`tail -1 $LOGFILE | awk '{print $1}'` $ "
(read the last line of the file referenced by $LOGFILE, and print the 1st column assuming a default field delimiter) etc etc. If you can execute it, you can include it.