A nie otrzymujesz przypadkiem komunikatu:
Can only modify an image if it contains a bitmap ?
Możesz pisać po Image o ile jest puste lub zawiera bitmapę, jeżeli wczytałeś do Image np. plik JPEG, PNG itp. to nie da się pisać po Canvas za pomocą standardowego GDI. Musiałbyś skorzystać z GDI+. Prościej jednak będzie wczytać bitmapę.
Jeżeli chcesz by tekst miał przeźroczyste tło to musisz Brush->Style ustawić bsClear:
Image1->Canvas->Brush->Style = bsClear;
Image1->Canvas->TextOut( 1, 1, "OMG");
Wystarczy TextOut, gdyż w C++Builder 2009 i nowszych domyślnym typem jest UnicodeString, więc TextOut jest równoznaczny z TextOutW. Gdybyś chciał zamiast typu UnicodeString przekazać AnsiString, wtedy powinieneś użyć TextOutA.