There are three elements in your system that can impose a 32bit addressing limit (= 4 GB): the number of address lines (wires) available in the FSB on the chipset, the same thing in FSB at the CPU pinout, and the flavour of your operating system. And, the 32b/64b flavour of your CPU's core. In practice, you can get various combinations in your system.
XP 32bit cannot address more than 4 GB of system address space. Essentially the system address space corresponds to the address lines in the FSB (wires between CPU and chipset). Some 32bit CPU's (with a 32bit core) actually had 36bit address lines in the FSB, and the bigger address space could be accessed by a paging mechanism called PAE - but as far as I know, XP don't support that and PAE has some limitations anyway, even on OS'es that do support it.
Even modern CPU's with a 64bit core actually have typically just 36 bits in the FSB, and the corresponding chipsets have just as many. Some recent Xeon's actually have 40 bits. And the Nehalem supports 24 GB per CPU package at the integrated RAM controller, difficult to say how many bits there are in the QuickPath bus. Also some older chipsets are limited to 4 GB only. Note that the maximum volume of physical RAM that the memory controller can take is usually limited at or below the FSB addressing capability - say 8 GB for some desktop chipsets.
Now there are elements in the chipset that need to be squeezed into the available address space no matter what. Such as the video RAM and the PCI/PCIe config spaces. The VRAM can be comparatively small (units of MB), while the PCI/PCIe config space is always huge (512 MB I believe).
To cater for this, the chipset shuffles its "BIOS e820 memory map" (system physical address space map, really) in such a way that the "memory mapped system resources" are stuck from the 4 GB boundary downwards, and what's left is used for physical RAM. There are also some special legacy arrangements in the *first* 1 MB and 16MB of address space, inherited from the MS-DOS era. The rest of physical RAM that doesn't fit under 4 GB is shoved above 4 GB (one big segment starting at 0x100000000 hexa), that is if the chipset supports >4GB. And then it's up to the CPU+OS, whether they can reach above 4 GB or not at the FSB physical address lines. So if you have XP 32bit, it will only be able to see the first 4 GB of physical address space - and the RAM is less than that (4 GB minus the mandatory MMIO system resources). Intel seems to have a pretty PDF (from 2005 I guess) that has some neat tables and explanations of the "4GB and even less" boundary problem, but it's classified as "intel confidential" and never remained on the 3rd-party web sites for a long time :-) although it's fairly harmless.
Precise information about your CPU's and chipset's FSB addressing capability can be found in the Intel datasheets. In some datasheets, this information is explicitly stated on the overview page. In others, you have to fumble through the pinout tables, to see how many address lines you can find (note: if the data path is 64 bits = 8 bytes wide, the bottom 3 address lines will be missing).