I recently had to write code to check if a page in the page library was already checked out, so that I can force the check in and publish it with comments.
The one that was hard to find was how to inspect in which state the page was in (checked out, published, draft, etc).
In the end, looking through the object model and after a while I found this pearl in the file object
pubPage.ListItem.File.Level ==
The possible values for this Level object are
SPFIleLevel.Checkout
SPFileLevel.Draft
SPFileLevel.Published
Hope this helps someone
Other Tags: Find out if SharePoint item is checked out; isCheckedOut;