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)
2. Object not being instanciated. (meaning you forgot to 'make' the object)
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.