Если нужна раскраска текста то наверное лучше RichTextBox.
Для фона, есть извращенные методы, как например поместить элемент с прозрачным фоном на Canvas, на котором собственно нарисовать, что угодно. Я делал такое в Silverlight, давно. Наверное в WPF тоже самое, хотя он умеет больше.