How do I tell if the returned cursor is the last cursor in App Engine
If you mean "has this cursor hit the end of the search results", then no, not without picking the cursor up and trying it again. If more entities are added that match the original search criteria, such that they logically land "after" the cursor (e.g., a query that sorts by an ascending timestamp), then reusing that saved cursor will let you retrieve those new entities.
I apologize if I am missing something really obvious.
I'm making successive calls to app engine using cursors.  How do I tell if the I'm on the last cursor?  The current way I'm doing it now is to save the last cursor and then testing to see if that cursor equals the currently returned cursor.  This requires an extra call to the datastore which is probably unnecessary though.
Is there a better way to do this?
Thanks!