Looking at the number of questions regarding this, perhaps it might be worthwhile having a component that does this? Perhaps it could even have a user controlled tolerance for the kinda-sorta look alike... a bit... somewhat cases?
if you're looking at exact duplicates of curves and points, here's what I'd do:
1) Write a new class in a VB or C# component that implements IComparer(Of IOnCurve). You can check easy properties first (boundingbox, length, start and end points), if these all turn out to be the same, you'll eventually have to drill down all the way to Nurbs properties (i.e. compare the CV array and Knot-Vectors of the curves), but perhaps it's good enough to stick with the easy comparisons.
2) Iterate through a list of IOnCurves (or OnCurves, or OnNurbsCurves, whatever you've got), and slowly populate a SortedList or SortedDictionary as you loop. This SortedList must be aware of your Comparer. Then, whenever you encounter a curve which already has been handled before, you know you've got a duplicate.
This is not exactly trivial, not even for the somewhat experienced DotNetters. I'll see if I have some time tomorrow to implement this.