When rerendering elements as a result of ajax requests you cannot hide a component by rerendering directly because JSF doesn't send the hidden (which rendered attribute evaluates to false) component to the browser and JSF has no idea that the element should get hidden in the DOM. To solve this problem create a wrapping element and rerender it when performing ajax request. With this approach when the response gets back to the browser, the HTML of the hidden block will be missing and it will not get in the browser's DOM. The code should become something like this:
<h:panelGroup id="panelWrapper">
<h:panelGroup id="customnerPanel" rendered="#{saleBean.saleVO.personType == 1}">
all input fields related customer goes here
</h:panelGroup>
<h:panelGroup id="sellerPanel" rendered="#{saleBean.saleVO.personType == 2}">
all input fields related seller goes here
</h:panelGroup>
</h:panelGroup>
And you should set the id of the wrapping component (panelWrapper in this case) in the reRender attribute of a4j:support.