Store previously typed entries (suitably filtered, so you don't fill it with one character nonsense or partially completed entries) in a list (see later). Turn on
AutoCompleteMode[
^] for the text box, set
AutoCompleteSource[
^] to CustomSource, make an AutoCompleteStringCollection (use this as the storage location for your history) and use that as the
AutoCompleteCustomSource[
^].
(NB: I've not actually done this, just taking MSDN's word for it.)
If you want the history to persist between invocations of the application, you will have to store it in a file or database. If you want it to synchronise between multiple concurrent instances of the application, you will have to re-read it each time, or use inter-process communication to notify other instances when the list is changed.