I'm using popovers with ARC and have not had to do anything special to maintain the reference count. As long as the popover is onscreen, there are strong references to it to keep it alive. Do you have a fail case you could post?
I consider the second issue you mention the more interesting one: pressing the barButtonItem repeatedly creates multiple instances of the popover. It's difficult to see them, because they stack up atop each other. But the shadows around the popup get darker with each added instance. The real tipoff to the problem is that every instance has to be dismissed separately.
One solution is to disable/enable the UIBarButtonItem on the way into and out of the popup. This worked well for me, but is slightly tedious. (I had to put code in two places - one in my own dismisser, and another in the popoverController's delegate's – popoverControllerDidDismissPopover: method, for the case where the user clicked outside the popover to dismiss it.)
I think that the (excellent) Stanford CS193P course addresses this issue by hiding the button while the popup is showing.
The iOS behavior actually seems like a bug. A click in the barButtonItem is outside the popover, and unless the barButtonItem's view is included in the popover's passthrough array, it is supposed to (according to the doc) dismiss the popover. But it doesn't and Apple didn't ask me.
I just checked and found that the passthrough array is initially nil, so removing the barButtonItem's view from that array is not an option. Drat.