Thanks for a fun game! Some quick thoughts:
1) If you use a TextGrid (instead of Grid) with a monospaced font you can avoid the line lengths differing (as they do in the picture at the top of your post).
2) The While logic is can be simplified a little:
While[And[input != "STOPNOW",
StringLength[input] != StringLength[word] || !DictionaryWordQ[ToLowerCase[input]]],
Print["Invalid entry: \"", input, "\". Please check word length and validity."];
-Joe