Darren Hobbs points out that having an artificial divide between compile time and runtime just makes life harder:
It gets more interesting when you get errors that aren't caught by the compiler (eg. calling a method on a null reference). In Java or C# the defect is already ossified in the compiled bytecode, and to fix it I have to change the source and recompile it plus everything that depends on it. On a big project this can be a time consuming process. On the other hand, in Smalltalk the error would be 'UndefinedObject doesNotUnderstand:someMethod'. And it would be as easy to correct as the mispelled method name from the previous example.
Seems to me that compile time checking is only important when you have the inconvenience of compile time in the first place.
Having to compile up front is like airport security - it gives you the illusion of safety with none of the actual benefits - and it makes the whole process slower as well...