В принципе есть такая идея:
В TextChanged отслеживать где находился курсор, и в сверять что изменилось с предыдущим вариантом, и раскрашивать изменённый текст, а при копировании все перекрашивать. Кстати, не знаете как отследить момент, когда в RichTextBox копируют текст?