次のコードをGCCでコンパイルしようとすると、
aho.cxx:12: error: cannot dynamic_cast ‘this’ (of type ‘const class Base* const’) to type ‘const class Derived* const’ (source type is not polymorphic)
と出ます。基底クラス内で、thisをアップキャストすることは不可能でしょうか。

実際にはDerived1やDerived2のような継承クラスがいくつかあり、Baseは抽象クラスです。
Base::Foo()は、どのクラスに継承されたかを調べるメソッドです。
Fooをそれぞれのクラスでオーバーライドするべき、というのは理解した上での質問です。

class Derived;

class Base {
public:
 int Foo() const;
};

class Derived : public Base {
};

int Base::Foo() const {
 const Derived* const p = dynamic_cast<const Derived* const>(this);
 if(p){
  return 1;
 }

 return 0;
}