There is no (native) way to stop a user from doing this.
Report on those items that didn't come from the database at the end of the day/week/month and identify if there are any particular culprits. (Downside, doesn't stop the user; Upside, no cost)
Throw an error on the preview with a big red warning across the relevant line item. (Downside, user has to preview and notice the error; Upside, no cost).
Ask me to get a small script written to stop the user from saving/delivering a document. (Downside, 1hr of effort; Upside, guarantees the user cannot manually add lines)
Purchase a validation module. (Downside, slightly more expensive than 1hr; Upside, stops users in their tracks and can also be used for other validation purposes).
*This requires a field in the product database to be populated with something (say "DatabaseProduct") in a random CustomText field. This wouldn't be a column visible to the user so they wouldn't be able to intefere with this function.
Not sure if this is possible but i would like to lock down QW, so that users can not add a blank line on a quote, the only way they can add items to the quote is through the product databases available to them. Anybody got any ideas???