Memory is limited in two places.
1. The operating system.
2. The motherboard.
Operating systems like windows can apply licence restrictions on memory. For example Windows7 32 bit will only allow up to 4 GB of allocated address space. One might think the reason is hardware related but actually the limit is entirely software related and in place to prevent poorly written drivers (not extended address aware) from breaking.
Motherboards can also apply restrictions since they are ultimately at least partly responsible for mapping memory addresses to hardware. Many old motherboards intended for 32 bit Windows operating system might not be able to handle large amounts of memory. Additionally newer large memory sticks might not be supported as the board was not designed to have to deal with such large sticks.
In the case of operating systems you can get around it either by changing operating system type (eg Linux does not suffer from the licencing restrictions Windows does so can have 32 bit builds allocating >4 GB of memory) or using a 64 bit operating system which are licenced to address more memory (since 64 bit drivers will be aware of the larger address space).
In the case of motherboards a BIOS update can help. Some times manufacturers release improved BIOS for their board which support newer hardware that did not exist when the board was manufactured.