Como te ha comentado CalgaryCorpus el error está en el signo <= que debería ser sólo < ya que sino lo que ocurre es que el propio número como es divisible consigo mismo se suma su valor a la suma y entonces nunca coincide.
Solucionado el problema te dejo un ćodigo correspondiente a tu misma función pero un poco más estética:
bool isPerfect(size_t number){
size_t sum = 0;
for(size_t divisor = 1; divisor < number; divisor++)
if(number % divisor == 0)
sum += divisor;
return (sum == number);
}
Y el programa principal también se puede mejorar un poco ya que en cada iteración estás llamando a la función dos veces seguidas de las cuales la primera no sirve ya que el valor de retorno se está perdiendo. En vez de usar <system("pause") es mejor que uses <cin.get()>.
int main(){
int limit;
cout << "Introduce el limite superior: ";
cin >> limit;
for(size_t number = 1; number <= limit; number++)
if(isPerfect(number))
cout << number << endl;
cin.get();
}