According to stackoverflow.com, Selenium WebDriver has 9 checks to verify whether an element is hidden or not.
1. OPTION, OPTGROUP (iff enclosing select is hidden)
2. IMAGEMAP (iff image is hidden)
3. INPUT (iff type is hidden)
4. NOSCRIPT (always hidden)
5. Visibility (iff value is hidden)
6. Display (iff value is none or has ancestor)
7. Transparency/Opacity (iff value is 0)
8. Hidden (iff value is true or has ancestor)
Note: variation for IE, see stackoverflow.com.
9. Size (iff enclosing box is 0 by 0)
Note: variation positive size, see stackoverflow.com.
For step 9, there are many variations for checking height and width. Let me do a quick and dirty overview. See stackoverflow.com for more on this.