There is a way to trick the device into believing it is running a different version of iOS. (Essentially fooling both the Appstore and Cydia)
I use this method so I can run games that require iOS 4.3+ even though I'm still running 4.2.1
If your still on iOS 4 and the app you want to use requires iOS 5, it would be a bad idea to spoof your device. The app more then likely actually needs the firmware update...
Anyway...
Navigate to:
/System/Library/CoreServices/SystemVersion.plist
Edit via Property Viewer using iFile.
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ProductBuildVersion</key>
<string>
8C148</string>
<key>ProductCopyright</key>
<string>1983-2010 Apple Inc.</string>
<key>ProductName</key>
<string>iPhone OS</string>
<key>ProductVersion</key>
<string>
4.2.1</string>
</dict>
</plist>
Edit ProductBuildVersion and ProductVersion strings
e.g: Changing from iOS 4.2.1 to 4.3.3
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ProductBuildVersion</key>
<string>
8J2</string>
<key>ProductCopyright</key>
<string>1983-2010 Apple Inc.</string>
<key>ProductName</key>
<string>iPhone OS</string>
<key>ProductVersion</key>
<string>
4.3.3</string>
</dict>
</plist>
Respring>Reboot
Reference Material:
http://thebigboss.org/firmware-313-spoofer-in-cydia