I've set up four categories to help users prioritize tasks. However, when they use the By Category view and drag tasks from one category to another, Outlook adds the new category to the item, but the item also retains the old category. Can you suggest a better way to handle this process?

Categories is the wrong property for this job because it's a keywords property and, therefore, can hold more than one value. If you want to be able to change the value of a property by dragging it from one group to another in a grouped view, you need a property that doesn't hold multiple values. You can either use the built-in Mileage or Billing Information fields, which usually don't get much use, or use the Field Chooser to add a new field. (Right-click the column headings in a table view, and you'll see Field Chooser on the context menu.)

You don't need to put the new field on a custom form. You can drag items between groups in the folder view to change the value in your new field.