Before forking out any cash - as advised elsewhere in this thread (about using inSSIDer) - look what channels neighbouring wireless devices are using and change your devices' channel (set via the router web interface) to the least populated.
There are 13 channels commonly in use (in Europe at least), however they overlap each other for the most part. Common wisdom is to use channels 1, 6 or 11 as they do not overlap each other. As the diagram and article here explains:
http://technet.microsoft.com/en-us/library/cc783011%...
So basically - use inSSIDer to find which of those 3 channels is least used in your locality and change your router to use that channel.
You may find that cures your range problem.