Q:

Is a class with empty body an incomplete type?

a class declaration makes the class an incomplete type, so no object of the class could be defined. And the definition of an incomplete type is that its member are not specified. Doesn't that means a class with empty body with no member specified in its definition makes it an incomplete type? 
class Empty { };

Empty e1; // okay, but why?

A:

Is a class with empty body an incomplete type?

No, a class with an empty body is simply an empty class, but still a fully defined one. An incomplete type is a type whose full definition is not visible.
class Empty;

// Here, Empty is an incomplete type

class Empty { };

// Here, Empty is a complete type

Per paragraph 3.9/5 of the C++11 Standard:

A class that has been declared but not defined, or an array of unknown size or of incomplete element type, is
  an incompletely-defined object type. Incompletely-defined object types and the void types are incomplete
  types (3.9.1). Objects shall not be defined to have an incomplete type.

Also, per paragraph 9.2/2:

A class is considered a completely-defined object type (3.9) (or complete type) at the closing } of the class-specifier. [...]

