"Do you have any ideas how one could find out which languages are compiled before interpretation?"
Somewhere between the documentation, the O'Reilly book, and the dev mailing list. And of course Google. One example is PHP.
"Would you say that they compile in the same way or similar to the way Java does, generating a bytecode that is run inside a virtual machine...?"
How a langauge is implemented may or may not cleanly seperate compile time and runtime. An intermediate format, maybe like bytecode, is usually involved. This is not always true, though. Further, not all these languages use an assembler-like code (as in the case of Java bytecode).
Some interpreters seperate the execution and interpretation phase into two distinct parts, thereby providing a (theoretically) clean seperation between runtime and compile time. In practice, I'm not sure this is really useful or entirely true. We can say Java's bytecode is seperate, but the VM does a lot of syntax, type, and object checking upon loading (even linking).
LISP is a nice, crazy example of how this can be made very confusing. It allows the runtime and compile time code to interact - call a fuction, use a variable, etc. The VM is there, but it is more like a software environment that doubles as a machine environment. So your interpreter can take the liberty of blurring the line between compiler/loader.
Regardless, intermediate formats always exist, but are not always intended for use outside internals.
"if you have an error in some of those languages I mentioned they will run fine until they encounter the error. This seems like they wouldn't have been compiled beforehand, right?"
The code has to be compiled, but there are exceptions to strict compile time and runtime borders (as mentioned above). Depends on the error and enviroment. Don't forget sometimes errors are suppressed until the compilation phase finishes or things get hairy (ex. Perl).
In Perl, there is such a thing as a compile phase and run phase. These are basically ways of saying that during compilation, some runtime operations can be performed (only certain ones, of course). Similarly, during the runtime phase, some compile time operations can be done. Still, Perl compiles first and then executes.