Woops, didn't see this thread at all!
You could simply not change the anchorPoint at all and move the CCSprite to the location it would appear at if you did change the anchorPoint.
For example:
Changing anchorPoint, then rotating
CCSprite *image = [CCSprite spriteWithFile:@"streak.png"];
[image setPosition:ccp(240, 160)];
[image setColor:ccBLUE];
[image setAnchorPoint:CGPointMake(0, 1)];
[image setRotation: 90];
[self addChild:image];
Keeping anchorPoint center, rotating, then moving
CCSprite *image2 = [CCSprite spriteWithFile:@"streak.png"];
[image2 setPosition:ccp(240, 160)];
[image2 setColor:ccRED];
[image2 setRotation: 90];
CGPoint curPos = [image2 position];
CGSize curSize = [image2 boundingBox].size;
[image2 setPosition:ccp(curPos.x - curSize.width/2, curPos.y - curSize.height/2)];
[self addChild:image2];
It will rotate the item on its side, then move it down into the same location as if the anchorPoint was set to (0, 1) before the rotation.
If you use the streak image from the resources folder, you'll see a pink block in one square. This means that the red + blue semi-transparent images are blending and the outcome is pink meaning they are in the same exact spot. Yet, if you rotate the red square (image2) 45 degrees, it will rotate about its center as the anchorPoint never changed.
-robodude666