Is there any occasion when you should use the Facebook style multiselect textbox (as seen in fcbkcomplete or smarttextbox) compared to a regular multiselect dropdown / list box or a set of checkboxes?
The most obvious case when to prefer such a component over a classical one is when the user is able to input something of their own that doesn't yet exist in the system (e.g. tag/classify some items).
This kind of input component works also as a direct way to both create new items and select those that already exist. The new items can then be (auto)suggested later on.
In addition to the advantage Jawa points out, the "smart" multiselect box also excels at allowing the user to select from an incredibly large number of results via filtering. As the user types "cat" in the text field, the drop-down can display only entries containing "cat," instantly showing the user whether the field they're looking for exists. If it does exist, the user can easily click or select it to add it to the box. If it doesn't exist, as Jawa points out, the user can submit it as a new entry.
In summary, this control can save the user a lot of scrolling and searching through a large number of items.
I think it depends on how familiar the users are with the data collection.
fcbkcomplete is a neat and efficient way to select data from an existing data collection if the user has a rather clear idea of what s/he is looking for and thus is able to type (the beginning of) a query that can be recognized by the system.
If, on the other hand, the user is unfamiliar with the data collection, a multiselect dropdown/list box might be the preferred user interface.
To comment on whether checkboxes might be the best option, I would need a more specific scenario description.
In terms of providing user feedback by displaying the selected data items, fcbkcomplete has the advantage that all (or at least more than one) of the selected items are visible at the same time, something which is not (necessarily) possible with dropdowns or list boxes.