It is possible -- but not practical. First consider that many people install an app OTA (over the air) and even on a fast 3G connection it's going to take a LONG time to download 40-50MB. Another factor is limited memory on devices. Applications have to be stored and run from the on-device flash memory, which is quite limited (32MB on older devices, 64MB or 128MB on newer devices). Apps, emails, contacts, etc. all take up space on the main memory so this space is at a premium. Basically even if people DO have enough space on their device to accomodate an app that size, chances are unless it's a really killer app they're not going to install it due to the size.
One alternative to bundling your resources with your app is to load them dynamically at runtime as they are needed. Host them on a webserver somewhere, and load them over the network from the app as needed. If the user has an SD card installed, you could cache data there since they typically have much more space than the onboard memory.