It usually occurs when you are hacking a script or joining 2 scripts together. It basically means one of 2 things:
+1. Clash of naming conventions. (meaning some code clobbered the variable you're trying to call as an object)
-1. Clash of naming conventions. +2. Object not being instanciated. (meaning you forgot to 'make' the object)
-2. Object not being instanciated. +3. Calling -> on an variable that is not an object (because you misstyped the variables' name (use error_reporting(E_ALL) to fix that), or because you are using the wrong one)
DmS has supplied a little bit of script which will dump the variable data onto the page:
This should help you spot if there is a clash of naming conventions otherwise you will have to pik through your script to identify where the problem with the object comes in.