Я нашел это в дампе SpringBoard, который, я думаю, будет вам полезен:
В SBWallpaperView.h:
- (void)replaceWallpaperWithImage:(id)image;
А в SBUIController.h:
- (id)wallpaperView;
Так что вы можете сделать что-то вроде:
[(SBWallpaperView *)[SBUIController sharedInstance] wallpaperView] replaceWallpaperWithImage:anImage];
Это один из способов.
Другой, который я нашел, это использовать + (void)noteWallpaperPreferencesChanged;
SBWallpaperView, я не уверен в этом, но похоже, что если вы делаете то, что сделали в первой попытке, а затем используете это вместо может это сработает.