Well, the next idea would be to create a MutableDetachedCriteria that is a copy of DetachedCriteria as well as a MutableCriteriaImpl with expression and order removal methods. Once you have a MutableCriteriaImpl, you can implement the methods that I suggested earlier.
Really, I would not recommend this approach. I would recommend a business-case specific class [OrderHistoryFinder] that contains nullable fields, and allows you to get and set them with properties. This class would be responsible for building a DetachedCriteria on request. This would allow you to incorporate the logic for AND, OR, EXISTS, NOT EXISTS, etc. in a correct fashion. Here is a blog link that you should read.
http://www.ayende.com/Blog/archive/2006/12/07/7055.aspx
Good luck!
Roy